这个定制的uialertview怎么样?

Mad*_*dav 0 iphone cocoa-touch

这是我采取的代码.....

  - (void)willPresentAlertView:(UIAlertView *)alertView
    {
        [[[alertView subviews] objectAtIndex:2] setBackgroundColor:[UIColor colorWithRed:0.5 green:0.0f blue:0.0f alpha:1.0f]];
    }

    - (void) presentSheet
    {
        UIAlertView *baseAlert = [[UIAlertView alloc] 
                                  initWithTitle:@"Alert" message:@"This alert allows the user to choose between a 'safe' and a 'deadly' choice, indicated by button color.\n\n\n\n" 
                                  delegate:self cancelButtonTitle:nil
                                  otherButtonTitles:@"Deadly!", @"Safe", nil];
UITextField *txtFld = [[UITextField alloc] initWithFrame:CGRectMake(60,10,240,31)];
[txtFld setDelegate:self];
[txtFld setBackgroundColor:[UIColor clearColor]];
[baseAlert addSubView:txtFld];
[txtFld release];
        [baseAlert show];
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是如果允许改变苹果提供的UIControls的基本外观,因为我没有看到任何理由苹果不应该允许这种类型的定制.

Tec*_*Zen 7

警报视图长期以来已经标准化,因为灭火器和安全标志之类的东西是标准化的,即您不希望人们在出现问题时不得不拼出新的界面.

通常,在高度标准化的界面中更改某些内容是个坏主意.它会给最终用户带来什么好处?他们会想,"该死的,我丢失了所有的数据,但警告告诉我确实看起来很有艺术感!" 更有可能的是,他们不会理解对话框实际上是警报,而是应用程序正常运行的一部分.

说了这么多,没有什么可以阻止你创建自己的自定义视图并以模态方式呈现它.这比Apple API引擎盖下的更安全,更容易.