进入系统。破坏性红色按钮颜色

ale*_*wis 3 uicolor ios swift

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

例如,可以在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解释在设备/操作系统上可能会有所不同,因此我想访问与设备/操作系统无关的颜色版本。

JAL*_*JAL 5

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 标头中找到。