Я хочу изменить цвет фона моего UIAlertView, но это не похоже на атрибут цвета.
Изменение цвета фона в UIAlertView?
Ответ 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
}
Ответ 3
Я недавно нуждался в этом и в итоге подклассифицировал UIAlertView. Вот код для всех, кто заинтересован.
http://kwigbo.com/post/318396305/iphone-sdk-custom-uialertview-background-color
Ответ 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:
Ответ 6
Это не то, что возможно.
Вам нужно создать собственное представление типа оповещения (включая предоставление анимации и т.д.) или использовать UIAlertView по умолчанию, поставляемый Apple.
Apple стремится не выставлять такие вещи, как цвет UIAlertView, так что пользовательский интерфейс имеет общее представление о всех приложениях. Изменение цвета из приложения в приложение будет путать пользователя.
Ответ 7
Добавьте в приложение среду QuartzCore и включите #import "QuartzCore/CALayer.h" в исходный файл.
Ответ 8
Это выглядит как наиболее надежное решение для меня
http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-uialertview-custom-graphics/
Ответ 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 не рекомендуется).