如何访问用于破坏性警报按钮样式的系统红色?
例如,可以在Swift中通过来访问用于按钮的默认样式蓝色let systemBlueColor = view.tintColor,这与相对应UIColor(red: 0, green: 122, blue: 255, alpha: 1.0)。
破坏性的红色似乎是由给定的,UIColor(red: 255, green: 59, blue: 48, alpha: 1.0)但是有什么方法可以使用类似于默认view.tintColor方法的方式来访问它?
我已经阅读到RGB解释在设备/操作系统上可能会有所不同,因此我想访问与设备/操作系统无关的颜色版本。
UIColor调用了一个未公开的类方法,_systemDestructiveTintColor该方法将返回所需的颜色:
let red = UIColor.performSelector("_systemDestructiveTintColor").takeUnretainedValue()
Run Code Online (Sandbox Code Playgroud)
它返回一个非托管对象,您必须调用该对象,.takeUnretainedValue()因为尚未将颜色所有权转移到我们自己的对象中。
与任何未公开的API一样,尝试使用此方法时应格外小心:
斯威夫特5:
if UIColor.responds(to: Selector(("_systemDestructiveTintColor"))) {
if let red = UIColor.perform(Selector(("_systemDestructiveTintColor")))?.takeUnretainedValue() as? UIColor {
// use the color
}
}
Run Code Online (Sandbox Code Playgroud)
以前的Swift版本:
if UIColor.respondsToSelector("_systemDestructiveTintColor") {
if let red = UIColor.performSelector("_systemDestructiveTintColor").takeUnretainedValue() as? UIColor {
// use the color
}
}
Run Code Online (Sandbox Code Playgroud)
此颜色和其他颜色可以在UIColor 标头中找到。
| 归档时间: |
|
| 查看次数: |
775 次 |
| 最近记录: |