如何使用样式UIAlertAction
获取UIAlertActionStyle.Destructive
中使用的默认iOS红色警告颜色而不自行组合颜色?
答案 0 :(得分:4)
嗯,这个问题让我感兴趣,我试图获得这种颜色。唯一的想法是创建屏幕外警报视图控制器并递归枚举其视图,以便我找到所需的标签或按钮进行破坏性操作。让我感到惊讶的是,警报视图控制器的视图包含集合视图。但是,我无法深入了解这个集合视图 - 它只是说它不包含子视图。这可能是出于安全目的而由Apple制作的,因此没有人可以通过编程方式点击警报按钮。
所以,我唯一的建议 - 在OS X中使用类似数字色度计的东西来确定颜色,然后只需对其进行硬编码。看起来没有别的办法了。
答案 1 :(得分:2)
没有API可以让您在运行时访问颜色而无需创建UIAlertAction
。
我知道这不完全是你想要的,但你可以这样做:
extension UIColor {
class func destructiveColor() -> UIColor {
return UIColor(red: 1, green: 0.2196078431, blue: 0.137254902, alpha: 1)
}
}
用法:
let redColor = UIColor.redColor()
let destructiveColor = UIColor.destructiveColor()
请注意,两个红色略有不同:
当然,这种解决方案并不完美,因为如果Apple调整颜色,它就不会自动更新。
答案 2 :(得分:1)
正如iOS SDK中的许多其他样式属性和定义一样, UIAlertActionStyle从基类派生其颜色 - 用于.destructive样式 - 这是私有的,不可公开访问。
在没有创建UIAlertAction实例并循环其子视图的情况下,无法在运行时访问该颜色。
唯一的方法是手动检查颜色,正如Alexander Doloz在他的回答中所说的那样。
答案 3 :(得分:0)
您可以在iOS Human Interface Guidelines找到所有默认的iOS颜色。在那里你可以找到很多有关iOS设计的有用信息。您也可以找到这些颜色+默认的iOS渐变here。