Подтвердить что ты не робот

Изменение цвета фона в UIAlertView?

Я хочу изменить цвет фона моего UIAlertView, но это не похоже на атрибут цвета.

4b9b3361

Ответ 1

Фон AlertView - изображение И вы можете изменить это изображение

UIAlertView *theAlert = [[[UIAlertView alloc] initWithTitle:@"Atention"
   message: @"YOUR MESSAGE HERE", nil)
   delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease];

   [theAlert show];

   UILabel *theTitle = [theAlert valueForKey:@"_titleLabel"];
   [theTitle setTextColor:[UIColor redColor]];

   UILabel *theBody = [theAlert valueForKey:@"_bodyTextLabel"];
   [theBody setTextColor:[UIColor blueColor]];

   UIImage *theImage = [UIImage imageNamed:@"Background.png"];    
   theImage = [theImage stretchableImageWithLeftCapWidth:16 topCapHeight:16];
   CGSize theSize = [theAlert frame].size;

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

   [[theAlert layer] setContents:[theImage CGImage]];

Ответ 2

Я также нашел почти идентичное обходное решение, и в моем случае он работает лучше. Используя выход оксигена, я обнаружил плохой результат на экране, и контекст стал размытым. Вместо подкласса UIAlertView я реализую:

- (void)willPresentAlertView:(UIAlertView *)alertView;

так... просто скопируйте и вставьте

- (void)willPresentAlertView:(UIAlertView *)alertView 
{
    blah blah blah...
    [[alertView layer] setContents:(id)theImage.CGImage];  // to avoid the warning
}

Ответ 4

Ну, я решил проблему по-другому. Я искал UIImageView, который содержит фоновое изображение и меняет изображение.

... шоу хорошо, возможно, не лучшее решение для изменения вида...

@implementation CustomAlertView

- (void)show {
    [super show];

    for (UIView *view in self.subviews) {
        NSLog(@"%@ with %i children", view, [view.subviews count]);
        // change the background image
        if ([view isKindOfClass:[UIImageView class]]) {
            UIImage *theImage = [UIImage imageNamed:@"password entry bg - default.png"];    
            ((UIImageView *)view).image = [theImage resizableImageWithCapInsets:UIEdgeInsetsMake(49, 8, 8, 8)];
        }
    }
}

@end

Ответ 5

Здесь представлено гораздо более новое решение, которое использует преимущества блоков и моделируется после TweetBot:

https://github.com/Arrived/BlockAlertsAnd-ActionSheets

Ответ 6

Это не то, что возможно.

Вам нужно создать собственное представление типа оповещения (включая предоставление анимации и т.д.) или использовать UIAlertView по умолчанию, поставляемый Apple.

Apple стремится не выставлять такие вещи, как цвет UIAlertView, так что пользовательский интерфейс имеет общее представление о всех приложениях. Изменение цвета из приложения в приложение будет путать пользователя.

Ответ 7

Добавьте в приложение среду QuartzCore и включите #import "QuartzCore/CALayer.h" в исходный файл.

Ответ 9

Недавно я нашел GRAlertView, который позволяет вам настроить UIAlertView в простой форме, по крайней мере, мне нравится. Вы найдете его здесь: https://github.com/goncz9/GRAlertView

Ответ 10

Вы должны использовать это:

UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"You are Select Row of" message:@"Human" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        alert.backgroundColor=[UIColor redColor];
        [alert show];
        [alert release];

он изменит цвет фона UIAlertView.

Ответ 11

Просто используйте этот код,

 UIImage *theImage = [UIImage imageNamed:@"imageName.png"];
 UIView *view=[alert valueForKey:@"_backgroundImageView"];
 //Set frame according to adustable
  UIImageView *image=[[UIImageView alloc] initWithImage:theImage];
 [image setFrame:CGRectMake(0, 0, 280, 130)];
 [view addSubview:image];

Ответ 12

Я не считаю, что для этого существует открытый метод или свойство. Установка backgroundColor из UIAlertView (как UIView) просто помещает цветной прямоугольный фон за вид предупреждения.

Я бы сказал, что это, вероятно, противоречит общему интерфейсу iPhone, чтобы изменить этот цвет, поэтому я не думаю, что он рекомендовал поведение (так же, как изменение цвета фона в представлении предупреждения в Mac OS X не рекомендуется).