如何在iPhone中为UIAlertview设置背景图像?

时间:2011-02-11 14:56:20

标签: iphone uialertview

我想将自定义图像设置为警报视图的背景。如果我将图像视图框架大小设置为静态,则它会正确显示。但是我已经通过消息内容是动态显示的,所以有时内容很小,有时它会在警报视图中显示大量的数据。所以如何设置图像视图框架大小取决于警报视图框架尺寸。

这是我的示例代码,

   UIAlertView *notesAlert = [[UIAlertView alloc] initWithTitle:@"" message:notes delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil];

   UIImage *alertBoxImage = [UIImage imageNamed:@"AlertViewBG.png"];

   UIImageView *_backgroundImageView = [[UIImageView alloc] initWithImage:alertBoxImage];

   _backgroundImageView.frame = CGRectMake(0, 0, 282, 130);

   _backgroundImageView.contentMode = UIViewContentModeScaleToFill;

   [notesAlert addSubview:_backgroundImageView];

   [notesAlert sendSubviewToBack:_backgroundImageView]; 

   NSLog(@"The Alert view frame height %f and width %f", notesAlert.frame.size.height, notesAlert.frame.size.width); 

     // height 0.000000 and width 0.000000

   [notesAlert show]; 

   NSLog(@"After showing the Alert view frame height %f and width %f", notesAlert.frame.size.height, notesAlert.frame.size.width); 

    // height 173.800003 and width 312.399994

看我的屏幕截图:

image

那么如何设置取决于警报视图框架的图像框架大小? 请帮帮我。 感谢。

4 个答案:

答案 0 :(得分:0)

你试过这个:

_backgroundImageView.frame = notesAlert.frame;

答案 1 :(得分:0)

您可以将UIAlertView的框架在其委托方法alertviewwillappear中设置为uiimageview框架。 或者您可以使用UIPopoverController并为其添加bgimage。

答案 2 :(得分:0)

答案 3 :(得分:0)

你必须使用UIAlertView的子类,其中覆盖方法......

- (void)drawRect:(CGRect)rect
{   
    UIImage *alertBoxImage = [UIImage imageNamed:@"AlertViewBG.png"];
    CGSize imageSize = alertBoxImage.size;
    [self.imgBackground drawInRect:CGRectMake(0, 0, imageSize.width, imageSize.height)];
}

隐藏UIAlertView的默认背景图像,如屏幕截图所示

- (void)didAddSubview:(UIView *)subview
{
    if ([subview isMemberOfClass:[UIImageView class]])
    {
        [subview removeFromSuperview];
    }
}