ios - Cómo cambiar el color de fondo de UINavigationBar desde AppDelegate
uinavigationitem title color (9)
Sé cómo cambiar la imagen de fondo de UINavigationBar
haciendo
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nabbar"] forBarMetrics:UIBarMetricsDefault];
y sé cómo configurar la barra en diferentes colores dentro de cada Views
..... Ahora quiero cambiar el color de fondo sin usar una imagen en un color sólido del app delegate
de la app delegate
. No quiero configurarlo cada vez desde cada vista y no quiero escribir un CGRect
.
Intenté [[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithRed:33/255.0 green:34/255.0 blue:36/255.0 alpha:1.0]];
pero no funciona y no puedo encontrar un código en ningún lugar que funcione en el delegado de la aplicación.
¿Alguien podría señalarme en la dirección correcta?
Como mencionan las otras respuestas, puedes usar setTintColor:
pero quieres un color sólido y eso no es posible haciendo el ajuste del color del tinte AFAIK.
La solución es crear una imagen mediante programación y establecer esa imagen como imagen de fondo para todas las barras de navegación a través de UIAppearance
. Sobre el tamaño de la imagen, no estoy seguro de si una imagen de 1x1 píxel funcionaría o si necesita el tamaño exacto de la barra de navegación. Consulte la segunda respuesta de esta pregunta para ver cómo crear la imagen.
Como consejo, no me gusta "sobrecargar" al delegado de aplicaciones con este tipo de cosas. Lo que suelo hacer es crear una clase llamada AppearanceConfiguration
con solo un método público configureAppearance
donde configuro todo el material de UIAppearance que quiero, y luego llamo a ese método desde el delegado de la aplicación.
El código de color es el problema aquí. En lugar de utilizar 195/255, use 0.7647 o 195.f / 255.f El problema es convertir el flotador no funciona correctamente. Intente usar el valor de flotación exacto.
Para cambiar el color de fondo y no el tinte, la siguiente pieza de código funcionará:
[self.navigationController.navigationBar setBarTintColor:[UIColor greenColor]];
[self.navigationController.navigationBar setTranslucent:NO];
Para hacer esto en iOS 7:
[[UINavigationBar appearance] setBarTintColor:myColor];
Puede establecer el color de fondo de UINavigation usando este código en cualquier controlador de vista
self.navigationController.navigationBar.backgroundColor = [UIColor colorWithRed:10.0f/255.0f green:30.0f/255.0f blue:200.0f/255.0f alpha:1.0f];
Puede usar [[UINavigationBar appearance] setTintColor:myColor];
Desde iOS 7, debe configurar [[UINavigationBar appearance] setBarTintColor:myColor];
y también [[UINavigationBar appearance] setTranslucent:NO]
.
[[UINavigationBar appearance] setBarTintColor:myColor];
[[UINavigationBar appearance] setTranslucent:NO];
Puedes hacerlo fácilmente con Xcode 6.3.1. Seleccione su NavigationBar en el esquema del documento. Seleccione el Inspector de Atributos. Desmarque Translucent. Ajuste Bar Tint al color deseado. ¡Hecho!
Sintaxis Swift:
UINavigationBar.appearance().barTintColor = UIColor.whiteColor() //changes the Bar Tint Color
Acabo de poner eso en AppDelegate didFinishLaunchingWithOptions y persiste en toda la aplicación
Swift :
self.navigationController?.navigationBar.barTintColor = UIColor.red
self.navigationController?.navigationBar.isTranslucent = false