19

iOS7 引入了通用的 tint-color。我认为UIAlertView也在有效范围内,但实际上 tintColor 看起来不适用于UIAlertView. (用于可点击的按钮文本颜色)

是否可以更改警报视图的色调?如果可能,如何改变它?

4

3 回答 3

26

不幸的是,您无法自定义警报视图的外观,也无法更改按钮文本颜色。

UIAlertView 类参考中清楚地提到了它:

UIAlertView 类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改。

更新:

问题是关于 iOS7,但现在UIAlertView已弃用,因为UIAlertController您可以简单地更改视图色调颜色:

    let alert = UIAlertController(title: "Gimme a break",
                                message: "For God sake its iOS7 question!",
                         preferredStyle: .alert)
    alert.view.tintColor = UIColor.red

检查这个问题也很有帮助:How to change UIAlertController button text color in iOS9?

于 2013-10-05T13:39:13.030 回答
2

UIActionSheet也可以通过这种方式改变按钮的颜色。

[[UIView appearance] setTintColor:[UIColor redColor]];
于 2015-04-09T08:51:33.510 回答
2

前面提到的答案[[UIView appearance] setTintColor:[UIColor redColor]];应该可以工作,但是如果您只想更改UIAlertView色调颜色,则此代码的作用比应该做的要多。

您可以在 iOS < 9 上以这种方式瞄准组件:

[[UIView appearanceWhenContainedIn:[UIAlertView class], nil] setTintColor:[UIColor redColor]];
[[UIView appearanceWhenContainedIn:[UIAlertController class], nil] setTintColor:[UIColor redColor]];

iOS >9 上

[[UIView appearanceWhenContainedInInstancesOfClasses:@[[UIAlertView class]]] setTintColor:[UIColor redColor]];
[[UIView appearanceWhenContainedInInstancesOfClasses:@[[UIAlertController class]]] setTintColor:[UIColor redColor]];
于 2016-04-05T15:13:57.453 回答