Cómo cambiar el color de fondo de UINavigationBar desde AppDelegate

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?

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]; 

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]; 

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

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!

Swift :

 self.navigationController?.navigationBar.barTintColor = UIColor.red self.navigationController?.navigationBar.isTranslucent = false 

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 progtwigció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 1×1 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.

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]; 

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.