如何获得默认的iOS红色警告颜色?

时间:2016-09-01 15:47:21

标签: ios swift uicolor

如何使用样式UIAlertAction获取UIAlertActionStyle.Destructive中使用的默认iOS红色警告颜色而不自行组合颜色?

4 个答案:

答案 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()

请注意,两个红色略有不同:

enter image description here

当然,这种解决方案并不完美,因为如果Apple调整颜色,它就不会自动更新。

答案 2 :(得分:1)

正如iOS SDK中的许多其他样式属性和定义一样, UIAlertActionStyle从基类派生其颜色 - 用于.destructive样式 - 这是私有的,不可公开访问。

在没有创建UIAlertAction实例并循环其子视图的情况下,无法在运行时访问该颜色。

唯一的方法是手动检查颜色,正如Alexander Doloz在他的回答中所说的那样。

答案 3 :(得分:0)

您可以在iOS Human Interface Guidelines找到所有默认的iOS颜色。在那里你可以找到很多有关iOS设计的有用信息。您也可以找到这些颜色+默认的iOS渐变here