正在访问系统 .破坏性的红色按钮颜色



如何访问用于破坏性警报按钮样式的系统红色?

例如,用于按钮的默认样式蓝色可以在 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标题中找到。

最新更新