如何访问用于破坏性警报按钮样式的系统红色?
例如,用于按钮的默认样式蓝色可以在 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()
它返回一个非托管对象,您必须调用该对象.takeUnretainedValue()
,因为颜色所有权尚未转移到我们自己的对象。
与任何未记录的 API 一样,尝试使用此方法时应小心:
雨燕 5:
if UIColor.responds(to: Selector(("_systemDestructiveTintColor"))) {
if let red = UIColor.perform(Selector(("_systemDestructiveTintColor")))?.takeUnretainedValue() as? UIColor {
// use the color
}
}
以前的 Swift 版本:
if UIColor.respondsToSelector("_systemDestructiveTintColor") {
if let red = UIColor.performSelector("_systemDestructiveTintColor").takeUnretainedValue() as? UIColor {
// use the color
}
}
这种颜色和其他颜色可以在UIColor标题中找到。