2013-10-05 40 views
19

iOS7引入了一般的色调。我认为UIAlertView也在有效范围内,但实际上tintColor看起来不适用于UIAlertView。 (用于可点按钮文字颜色)如何更改iOS7中UIAlertView的按钮文字颜色?

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

+0

尝试参见[PMAlertController](https://开头github.com/Codeido/PMAlertController)一个小型库,它允许你用一个美丽且完全可定制的警报来替代Apple不可定制的UIAlertController。 –

回答

27

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

它在UIAlertView Class Reference清楚地提及:

的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 colour in iOS9?

+2

@downvoter而不是这个懦弱的downvote,请告诉我们,如果我们使用'UIAlertView'实现这个! – null

+0

- (void)willPresentAlertView:(UIAlertView *)alertView 应该为您提供编辑所有子视图的选项,并且不可避免地取消按钮是该'alertview'对象的子视图。找不到它.. – eiran

+2

你*不应该*。但是你可以**。 – wouterds

2

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

[[UIView appearance] setTintColor:[UIColor redColor]]; 
+2

你是什么意思“这种方式”? – Eonil

+0

''[[UIView外观] setTintColor:[UIColor redColor]];'也可以改变'UIActionSheet'按钮'的颜色临时 –

+0

@ answer-huang我从你的评论复制“这种方式”到你的答案。 – null

3

以前的答案提[[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]]; 
+0

它也在使用ios 10。 – bittu

+1

@bittu thx我编辑了我的帖子以指定> iOS9 –