UIAlertView中的自定义颜色

时间:2010-12-01 12:36:43

标签: iphone uialertview

大家好我使用下面的代码为UIAlertView提供自定义颜色。我使用的是S.D.K. 3.2.3并且颜色变成了所需的颜色。但今天我更新了我的S.D.K.现在我使用4.2.1并在此S.D.K上运行此代码。它工作。但是当我再次检查AlertView的颜色没有改变,但我提供的图像的颜色,移动到alertview的后面。我不知道为什么会发生这种情况。 有什么不对,我不使用ios 4.2。 请告诉我如何在ios 4.2中执行此操作,代码与3.2.3 sdk一起运行良好。 代码是

UIAlertView *ForgotPassalert= [[UIAlertView alloc]initWithTitle:@"Status" message:@"An Email has sent to your Account Containing User Name and Password " delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"cancel",nil];

        CGAffineTransform moveUp = CGAffineTransformMakeTranslation(0.0,
-120.0);
        [ForgotPassalert setTransform: moveUp];
        [ForgotPassalert show];

    #pragma mark (AlertView Custom Color)       
        UIImage *theImage = [UIImage imageNamed:@"Untitled-1.png"];    
        theImage = [theImage stretchableImageWithLeftCapWidth:16 topCapHeight:16];
        CGSize theSize = [ForgotPassalert frame].size;
        UIGraphicsBeginImageContext(theSize);

        [theImage drawInRect:CGRectMake(0, 0, theSize.width, theSize.height)];    
        theImage = UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();
        [[ForgotPassalert layer] setContents:(id)theImage.CGImage];

        //[[Passalert layer]setBackgroundColor:[[UIColor colorWithRed:179.0f/255.0f green:21.0f/255.0f blue:17.0f/255.0f alpha:1.0f]CGColor]];
        [[ForgotPassalert layer]setCornerRadius:7.3F];   
        [ForgotPassalert release];

2 个答案:

答案 0 :(得分:0)

这背后唯一可能的原因是,Apple会更改AlertView的层结构或其实现。这就是为什么你无法看到改变的颜色。

这就是为什么建议不要打扰默认控件(如UIAlertView,UIActionSheet,UIPickerView)的外观和感觉,因为苹果不提供已发布的方法。无论你做了什么,只有现在已经解决的解决方法。

你很幸运,你的应用程序没有崩溃所以不关心警报上没有显示的颜色。

希望您了解基本的user interface guidelines.

谢谢,

Madhup

答案 1 :(得分:0)

所以它是否意味着没有其他方法可以改变颜色,因为在我的应用程序中我已经使所有内容与应用程序颜色方案匹配,红色和黑色,但只有对话框创建混乱他们的默认蓝色我正在使用xcode 4.2使用故事板,我对UIActionSheet进行了更改,但无法更改AlertView背景颜色。