Quiero cambiar el color de fondo de mi UIAlertView, pero esto no parece tener un atributo de color.¿Cambiar el color de fondo de un UIAlertView?
Respuesta
No creo que haya un método o propiedad expuesto para hacer esto. Establecer el backgroundColor de UIAlertView (como UIView) simplemente pone un fondo rectangular de color detrás de la vista de alerta.
Diría que probablemente sea contrario a la interfaz común del iPhone alterar este color, por lo que no creo que sea el comportamiento recomendado (del mismo modo que cambiar el color de fondo de una vista de alerta en Mac OS X no es recomendado).
Es cierto, pero supongo que si Apple nos impone reglas, deberían seguir reglas similares también, ¿estoy en lo cierto? Si ve las AlertViews de GameKit, todas tienen el color de fondo negro. ¡Extraño! – doNotCheckMyBlog
Esto no es algo que es posible.
O bien necesita crear su propia vista de tipo de alerta (incluida la provisión de la animación, etc.) o utilizar el UIAlertView predeterminado proporcionado por Apple.
Apple tiende a no exponer cosas como el color de UIAlertView para que la interfaz de usuario tenga una sensación común en todas las aplicaciones. Cambiar el color de la aplicación a la aplicación sería confuso para el usuario.
No permitir cambiar el color hará que los desarrolladores de aplicaciones creen sus propios elementos de IU, lo que podría terminar siendo aún más confuso;) – Thomas
Antecedentes de AlertView es una imagen y se puede cambiar esta imagen
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]];
Asegúrese de consultar: http://stackoverflow.com/questions/883208/how-to-change-background-color-of-uialertview/1478873#1478873 para obtener sugerencias de mejora – Casebash
cómo puedo hacer que la imagen se escale hasta que se ajuste a la vista de alerta? – aryaxt
Intenté esto pero no funcionó. ¿Hay algún requisito para el tamaño de la imagen? En este momento estoy usando una imagen de alta resolución. – Ankur
También he encuentro una solución casi idéntica y, en mi caso, funciona mejor. Usando la salida de oxígeno he descubierto un resultado pobre en la pantalla y el contexto se vuelve borroso. En lugar de la subclasificación UIAlertView implemento:
- (void)willPresentAlertView:(UIAlertView *)alertView;
así que ... sólo tienes que copiar & pasta
- (void)willPresentAlertView:(UIAlertView *)alertView
{
blah blah blah...
[[alertView layer] setContents:(id)theImage.CGImage]; // to avoid the warning
}
A partir de iOS 5, este enfoque ya no funciona :( –
funciona también en iOS 6, amigo – harshitgupta
Añadir marco QuartzCore a la solicitud e incluir import "QuartzCore/CALayer.h" en el archivo de origen .
gracias a que QuartzCore ha solucionado el problema – aryaxt
Hace poco lo necesitaba y terminé subclasificando UIAlertView. Aquí está el código para cualquiera que esté interesado.
http://kwigbo.com/post/318396305/iphone-sdk-custom-uialertview-background-color
Esta solución es buena porque no hay necesidad de generar una imagen de fondo, sin embargo, no se ve tan bien como la versión que hizo Apple. – Casebash
mejor de su clase. Muchas gracias. – harshitgupta
El enlace está roto. – DuneCat
Bueno he resuelto el problema de una manera diferente. Busqué el UIImageView que contiene la imagen de fondo y cambio la imagen.
... así espectáculo no es quizá la mejor solución para alterar la vista ...
@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
Este enfoque aún funciona a partir de iOS 5, y la sustitución de la imagen se puede hacer en el método '- (void) willPresentAlertView: (UIAlertView *) alertView', que no requiere anular el método 'show'. –
Sólo pensé en aclarar: si está creando una subclase de UIAlertView, anule - (void) show. O puede incluir el código de arriba dentro de willPresentAlertView en el delegado. –
Esto funcionó para mí. Gracias amigo. –
Aquí es una solución mucho más reciente que se aprovecha de bloques y sigue el modelo de tweetbot:
usted tiene que utilizar esto:
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];
cambiará el color de fondo de UIAlertView.
Esto cambia el color de fondo de clearColor a un color sólido que da como resultado un UIAlertView de aspecto muy pobre. – TMilligan
Esto parece la solución más robusta para mí
http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-uialertview-custom-graphics/
Sólo tiene que utilizar este código,
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];
recientemente he encontrado el GRAlertView, que le permiten adaptar UIAlertView de una manera fácil que al menos me gusta Lo encontrarás aquí: https://github.com/goncz9/GRAlertView
- 1. Cambiar el color de fondo de NSButton
- 2. Cambiar el color de fondo en NSAttributedString
- 3. Cambiar el color de fondo UIButton
- 4. xterm: cómo cambiar el color de fondo?
- 5. Cambiar el color de fondo de un panel intellij
- 6. Cambiar el color de fondo de un NSCollectionView
- 7. ggplot2 facet_grid() cambiar color de fondo
- 8. div color de fondo, para cambiar onhover
- 9. Cambiar color de fondo y color de fuente
- 10. Cambiar el color de fondo y el color de fondo del texto en un cuadro de texto
- 11. Cambiar color de fondo ActionBar Tabs
- 12. ¿Cambiar el color de selección de fondo de ListView?
- 13. Cambiar el fondo de un Formulario MDI
- 14. JTable cómo cambiar color de fondo
- 15. ¿Puedo cambiar el color de fondo de la consola Firebug?
- 16. Cambiar el fondo de un UITableView agrupado
- 17. Cambiar el color de fondo de UIView programáticamente
- 18. Cambiar el color de fondo del menú de Android
- 19. Cambiar el color de fondo de ActionBarSherlock programmatically
- 20. Cambiar el color de fondo de una etiqueta en C#
- 21. Cambiar el color de fondo del panel de zedgraph
- 22. Cambiar el color de fondo de líneas en la pila
- 23. Cómo cambiar el color de fondo de wx.Panel en MouseOver?
- 24. ¿cómo podemos cambiar el color de fondo de una ruleta?
- 25. cambiar el color de fondo del elemento de navegación (barra)
- 26. Cambiar el color de fondo de jQuery deslizador
- 27. ¿Cómo cambiar el color de fondo de JOptionPane?
- 28. Cambiar el color de fondo de DateTimePicker en .NET
- 29. UISearchBar: cambiar el color de fondo del campo de entrada
- 30. Cómo cambiar el color de fondo de la vista enfocada
Marque una respuesta si su pregunta fue respondida. –