如何访问用于破坏性警报按钮样式的系统红色?
例如,用于按钮的默认样式蓝色可以在 Swift 中通过 let systemBlueColor = view.tintColor
访问,它对应于 UIColor(red: 0, green: 122,蓝色:255,阿尔法: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 一样,尝试使用此方法时应谨慎:
swift 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 header 中找到这种颜色和其他颜色.
关于ios - 访问系统。破坏性的红色按钮颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36139462/