如何更改UIAlertView按钮背景颜色?

时间:2014-03-12 10:37:05

标签: ios cocoa-touch uibutton uialertview

我使用以下代码创建了UIAlertView多个按钮:

UIAlertView *alert = [[UIAlertView alloc] initWithFrame:CGRectMake(0, 0, 300, 200)];
alert.tag = TAG_ALERT0;
alert.title = @"Notes";
alert.delegate = self;
[alert addButtonWithTitle:@"Add Note"];
[alert addButtonWithTitle:@"Show Notes"];
[alert addButtonWithTitle:@"Cancel"];
[alert show];

我想知道是否可以为每个按钮添加不同的背景颜色?

1 个答案:

答案 0 :(得分:0)

是的,您 可以 ,但不应修改UIAlertView的外观,因为Apple讨厌那个狗屎。
而是创建自己的UIView,模仿alertView

另外...... initWithFrame方法是否有所作为? 示例...尝试:

UIAlertView *alert = [[UIAlertView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];

它不会有所作为。

所以......我建议:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Notes"
                                                message:nil
                                               delegate:self
                                      cancelButtonTitle:@"Cancel"
                                      otherButtonTitles:@"Add Note",@"Show Notes",nil];
[alert setTag:TAG_ALERT0];
[alert show];

但是既然你要求提供示例代码,那么下面的例子就很简单了:

法定警告:

  1. Apple不喜欢这个
  2. 在iOS7中不起作用
  3. 示例:

    -(void)willPresentAlertView:(UIAlertView *)alertView
    {
        UILabel *theTitle = [alertView valueForKey:@"_titleLabel"];
        [theTitle setTextColor:[UIColor orangeColor]];
    
        NSMutableArray *arrButtons = [alertView valueForKey:@"_buttons"];
        for (UIView *vwCurrent in arrButtons) {
            [vwCurrent setBackgroundColor:[UIColor redColor]];
        }
    }