Texto de barra de navegación IOS 7 y color de flecha

Quiero establecer el fondo para que la barra de navegación sea negra y que todos los colores queden dentro sean blancos .

Entonces, usé este código:

[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], NSForegroundColorAttributeName, [UIColor whiteColor], NSForegroundColorAttributeName, [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], NSForegroundColorAttributeName, [UIFont fontWithName:@"Arial-Bold" size:0.0], NSFontAttributeName, nil]]; 

Pero el color del texto del botón de retroceso, la flecha y el botón de la barra todavía tienen el color azul predeterminado.
¿Cómo cambiar esos colores como en la imagen de abajo?

enter image description here

El comportamiento de algunas de las propiedades de UINavigationBar ha cambiado desde iOS 7 . Puedes ver en la imagen que se muestra a continuación:

enter image description here


Dos hermosos enlaces que me gustaría compartir contigo. Para más detalles, puede ir a través de estos enlaces:

  1. iOS 7 UI Transition Guide .
  2. Cómo actualizar su aplicación para iOS 7 .

La documentación de Apple para barTintColor dice:

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

Código de muestra :

 self.navigationController.navigationBar.barTintColor = [UIColor blackColor]; self.navigationController.navigationBar.tintColor = [UIColor whiteColor]; [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}]; self.navigationController.navigationBar.translucent = NO; 

enter image description here

Este me tomó alrededor de medio día para averiguarlo, pero esto es lo que funcionó para mí. Dentro del controlador raízViewController que inicializa navigationController, puse este código dentro de mi método viewDidAppear:

 //set bar color [self.navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:85.0/255.0 green:143.0/255.0 blue:220.0/255.0 alpha:1.0]]; //optional, i don't want my bar to be translucent [self.navigationController.navigationBar setTranslucent:NO]; //set title and title color [self.navigationItem setTitle:@"Title"]; [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor]]; //set back button color [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor,nil] forState:UIControlStateNormal]; //set back button arrow color [self.navigationController.navigationBar setTintColor:[UIColor whiteColor]]; 

Mi publicación completa sobre esto aquí

Swift3, ios 10

Para asignar el color de forma global, en AppDelegate didFinishLaunchingWithOptions :

 let textAttributes = [NSForegroundColorAttributeName:UIColor.white] UINavigationBar.appearance().titleTextAttributes = textAttributes 

Swift 4, iOS 11

 let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white] UINavigationBar.appearance().titleTextAttributes = textAttributes 

La respuesta de Vin funcionó muy bien para mí. Aquí está la misma solución para desarrolladores de C # que usan Xamarin.iOS / MonoTouch:

 var navigationBar = NavigationController.NavigationBar; //or another reference navigationBar.BarTintColor = UIColor.Blue; navigationBar.TintColor = UIColor.White; navigationBar.SetTitleTextAttributes(new UITextAttributes() { TextColor = UIColor.White }); navigationBar.Translucent = false; 
 [[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}]; 

Swift / iOS8

 let textAttributes = NSMutableDictionary(capacity:1) textAttributes.setObject(UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) navigationController?.navigationBar.titleTextAttributes = textAttributes 

Para cambiar el color del título UINavigationBar la manera correcta use este código:

 [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor]]; 

UITextAttributeTextColor está en desuso en la última versión de UITextAttributeTextColor 7. Use NSForegroundColorAttributeName en NSForegroundColorAttributeName lugar.

Si está buscando cambiar el tamaño del texto del título y el color del texto , debe cambiar NSDictionary titleTextAttributes , para 2 de sus objetos:

  self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:13.0],NSFontAttributeName, [UIColor whiteColor], NSForegroundColorAttributeName, nil]; 

Creo que las respuestas anteriores son correctas, esta es otra forma de hacer lo mismo. Lo estoy compartiendo aquí con otros por si acaso se vuelve útil para alguien. Así es como puedes cambiar el color del texto / título para la barra de navegación en ios7:

 UIColor *red = [UIColor colorWithRed:254.0f/255.0f green:0.0f/255.0f blue:0.0f/255.0f alpha:1.0]; NSMutableDictionary *navBarTextAttributes = [NSMutableDictionary dictionaryWithCapacity:1]; [navBarTextAttributes setObject:red forKey:NSForegroundColorAttributeName ]; self.navigationController.navigationBar.titleTextAttributes = navBarTextAttributes; 

Parece que los controles de Accessibility en la iOS Settings anulan casi todo lo que intenta hacer en cuanto a los botones de la barra de navegación. Asegúrate de tener todas las configuraciones en las posiciones predeterminadas (establece boost el contraste, el texto en negrita , las formas de los botones, etc. en off) de lo contrario, no verás ningún cambio. Una vez que lo hice, todo el código de cambio de color comenzó a funcionar como se esperaba. Puede que no sea necesario que los apagues todos, pero no lo seguí.