2013-10-05 75 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 –