这是我采取的代码......
- (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];
}
我的问题是如果允许更改苹果公司提供的UIControls的基本外观,因为我没有看到苹果不应该允许这种类型的定制的任何理由。
答案 0 :(得分:7)
警报视图长期以来已经标准化,因为灭火器和安全标志之类的东西是标准化的,即您不希望人们在出现问题时不得不拼出新的界面。
通常,在高度标准化的界面中更改某些内容是个坏主意。它会给最终用户带来什么好处?他们会想,“该死的,我丢失了所有的数据,但警告说我确实看起来确实很有艺术感!”更有可能的是,他们不会理解对话框实际上是警报,而是应用程序正常运行的一部分。
说了这么多,没有什么可以阻止你创建自己的自定义视图并以模态方式呈现它。这比Apple API引擎盖下的更安全,更容易。
答案 1 :(得分:3)
我不知道Apple是否会拒绝访问未记录的子视图的应用程序,但他们肯定会建议不要这样做。事实上,当我上周参加iPhone技术讲座时,一位开发人员传道人明确表示不会这样做,因为实施将会改变,你的应用程序将会崩溃。