¿Cómo cambiar el color de la barra de navegación en iOS 7?

¿Cómo cambio el color de la barra de navegación en iOS 7?

Básicamente quiero lograr algo así como el Twitter Nav Bar (Twitter actualizado para iOS7 ). Incrustado en una barra de navegación encima de un view controller . Todo lo que quiero es cambiar el color de la barra de navegación a azul claro junto con la barra de herramientas en la parte superior. Parece que no puedo encontrar una opción en mi storyboard .

El comportamiento de tintColor para barras ha cambiado en iOS 7.0. Ya no afecta el fondo de la barra.

De la documentación:

referencia de clase BarTintColor

El color del tinte para aplicar al fondo de la barra de navegación.

 @property(nonatomic, retain) UIColor *barTintColor 

Discusión
Este color se hace translúcido por defecto a menos que establezca la propiedad translúcida en NO .

Disponibilidad

Disponible en iOS 7.0 y posterior.

Declarado en
UINavigationBar.h

Código

 NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."]; if ([[ver objectAtIndex:0] intValue] >= 7) { // iOS 7.0 or later self.navigationController.navigationBar.barTintColor = [UIColor redColor]; self.navigationController.navigationBar.translucent = NO; }else { // iOS 6.1 or earlier self.navigationController.navigationBar.tintColor = [UIColor redColor]; } 

También podemos usar esto para verificar la versión de iOS como se menciona en la Guía de transición de la IU de iOS 7

 if (floor(NSFoundationVersionNumber) < = NSFoundationVersionNumber_iOS_6_1) { // iOS 6.1 or earlier self.navigationController.navigationBar.tintColor = [UIColor redColor]; } else { // iOS 7.0 or later self.navigationController.navigationBar.barTintColor = [UIColor redColor]; self.navigationController.navigationBar.translucent = NO; } 

EDITAR usando xib

enter image description here

Sé que esta pregunta fue hecha y respondida hace más de un año, pero …

Hacer lo que hizo la pregunta original, obtener el aspecto de la barra de navegación del viejo Twitter, fondo azul con texto blanco, es muy fácil de hacer simplemente usando Interface Builder en Xcode.

  • Usando el contorno del documento, seleccione su barra de navegación.
  • En el Inspector de atributos, en el grupo Barra de navegación, cambie el Estilo de Predeterminado a Negro. Esto cambia el color de fondo de las barras de navegación y estado a negro, y su texto a blanco. Por lo tanto, la batería y otros icons y texto en la barra de estado se verán blancos cuando la aplicación se esté ejecutando.
  • En el mismo grupo de barra de navegación, cambia el matiz de barra al color que te guste.
  • Si tiene elementos del botón de barra en su barra de navegación, esos mostrarán su texto en el color azul predeterminado, por lo que en el grupo de vista Inspector de atributos, cambie el matiz a color blanco.

Eso debería darte lo que quieres. Aquí hay una captura de pantalla que facilitaría ver dónde realizar los cambios.

Dónde hacer los cambios necesarios, incluido el resultado en iOS Simulator

Tenga en cuenta que cambiar solo el Tinte de barra no cambia el color del texto en la barra de navegación o la barra de estado. El Estilo también necesita ser cambiado.

 self.navigationBar.barTintColor = [UIColor blueColor]; self.navigationBar.tintColor = [UIColor whiteColor]; self.navigationBar.translucent = NO; // *barTintColor* sets the background color // *tintColor* sets the buttons color 

En una aplicación basada en navegación, puede colocar el código en AppDelegate. Un código más detallado podría ser:

 // Navigation bar appearance (background and title) [[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor titleColor], NSForegroundColorAttributeName, [UIFont fontWithName:@"FontNAme" size:titleSize], NSFontAttributeName, nil]]; [[UINavigationBar appearance] setTintColor:[UIColor barColor]]; // Navigation bar buttons appearance [[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor textBarColor], NSForegroundColorAttributeName, shadowColor, NSShadowAttributeName, [UIFont fontWithName:@"FontName" size:titleSize], NSFontAttributeName, nil]; 

En viewDidLoad , establece:

  self.navigationController.navigationBar.barTintColor = [UIColor blueColor]; 

Cambie ( blueColor ) al color que desee.

Si quieres usar un código hexadecimal, esta es la mejor manera de hacerlo.

Primero, defina esto en la parte superior de su clase:

 #define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0] 

Luego, dentro de la “aplicación didFinishLaunchingWithOptions”, coloca esto:

 [[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x00b0f0)]; 

Ponga el código hexadecimal en lugar del 00b0f0.

Para cambiar rápidamente el color de la barra de navegación:

  self.navigationController?.navigationBar.barTintColor = UIColor.redColor() 

cambiar la fuente del título, el tamaño, el color:

  self.title = "title" self.navigationController?.navigationBar.titleTextAttributes = [ NSForegroundColorAttributeName : UIColor.whiteColor(), NSFontAttributeName : UIFont(name: "Futura", size: 30)! ] 

En iOS 7 debes usar la propiedad -barTintColor:

 navController.navigationBar.barTintColor = [UIColor barColor]; 

Si necesita admitir ios6 e ios7, entonces obtiene esa luz azul en particular usando esto en su UIViewController :

 - (void)viewDidLoad { [super viewDidLoad]; NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."]; if ([[ver objectAtIndex:0] intValue] >= 7) { self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:89/255.0f green:174/255.0f blue:235/255.0f alpha:1.0f]; self.navigationController.navigationBar.translucent = NO; }else{ self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:89/255.0f green:174/255.0f blue:235/255.0f alpha:1.0f]; } } 

En realidad es más fácil que las respuestas que he visto aquí:

 1) Just make sure you select the navigation bar on the Navigation control. 2) Select the color you want in the bar tint. 3) You have other options too, and/or individually on each view (just play with it). 

Espero que esto ayude a alguien. No me gustaron las respuestas que vi. Me gusta mantener mi código lo más limpio posible. No digo que está mal hacerlo programáticamente, pero hay personas como yo … esto es para ustedes. Cambiar el color de la barra de navegación

Para completar el código de Rajneesh071, también puede establecer el color del título de la barra de navegación (y la fuente, si lo desea) ya que el comportamiento predeterminado cambió de iOS 6 a 7:

 NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."]; if ([[ver objectAtIndex:0] intValue] >= 7) { self.navigationController.navigationBar.barTintColor = [UIColor blackColor]; self.navigationController.navigationBar.translucent = NO; NSMutableDictionary *textAttributes = [[NSMutableDictionary alloc] initWithDictionary:mainNavController.navigationBar.titleTextAttributes]; [textAttributes setValue:[UIColor whiteColor] forKey:UITextAttributeTextColor]; self.navigationController.navigationBar.titleTextAttributes = textAttributes; } else { self.navigationController.navigationBar.tintColor = [UIColor blackColor]; } 

Agregar solo este código en su ViewContorller o en su AppDelegate

 if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0) { //This is For iOS6 [self.navigationController.navigationBar setTintColor:[UIColor yellowColor]]; } else { //This is For iOS7 [self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]]; } 
 //You could place this code into viewDidLoad - (void)viewDidLoad { [super viewDidLoad]; self.navigationController.navigationBar.tintColor = [UIColor redColor]; //change the nav bar colour self.navigationController.view.backgroundColor = [UIColor redColor]; //change the background colour self.navigationController.navigationBar.translucent = NO; } //Or you can place it into viewDidAppear - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:(BOOL)animated]; self.navigationController.navigationBar.tintColor = [UIColor redColor]; //change the nav bar colour self.navigationController.view.backgroundColor = [UIColor redColor]; //change the background colour self.navigationController.navigationBar.translucent = NO; } 

En una aplicación basada en la navegación, puedes cambiar el color

 NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."]; if ([[ver objectAtIndex:0] intValue] >= 7) { self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1]; self.navigationController.navigationBar.translucent = NO; } else { self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1]; } 
 #define _kisiOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) if (_kisiOS7) { [[UINavigationBar appearance] setBarTintColor:[UIcolor redcolor]]; } else { [[UINavigationBar appearance] setBackgroundColor:[UIcolor blackcolor]]; [[UINavigationBar appearance] setTintColor:[UIcolor graycolor]]; } 

Esta pregunta y estas respuestas son útiles. Con ellos pude establecer el color deseado de la barra de navigationBar azul oscuro con el título blanco y el texto del botón.

Pero también necesitaba cambiar el reloj, la portadora, la intensidad de la señal, etc., a blanco. El negro simplemente no contrastaba lo suficiente con el azul oscuro.

Puede que haya pasado por alto esa solución en una de las respuestas anteriores, pero pude hacer ese cambio agregando esta línea a viewController de viewController mi nivel superior:

 [self.navigationController.navigationBar setBarStyle:UIStatusBarStyleLightContent]; 
 - (void)viewDidLoad { [super viewDidLoad]; self.navigationController.navigationBar.barTintColor = [UIColor blueColor]; } 

Para el color:

 [[UINavigationBar appearance] setBarTintColor:[UIColor blackColor]]; 

Para la imagen

 [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBar_320X44.png"] forBarMetrics:UIBarMetricsDefault];