¿Cómo cambiar el color de la barra de navegación en iOS 7 o 6?
ios6 interface-builder (16)
// En ios 7: -
[self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]];
// En ios 6: -
[self.navigationController.navigationBar setTintColor:[UIColor yellowColor]];
Quiero cambiar el color del color de la barra de navegación, pero no estoy seguro de si debo cambiar el color o el fondo. Sé que iOS 7 busca un diseño más plano (incluso recomendando la eliminación de degradados ), pero estoy teniendo problemas para descifrar los dos. Incluso si configuro un color de fondo, no hace nada.
En esta imagen, el fondo se establece en verde, pero la barra sigue siendo azul:
Aquí se explica cómo configurarlo correctamente para iOS 6 y 7.
+ (void)fixNavBarColor:(UINavigationBar*)bar {
if (iosVersion >= 7) {
bar.barTintColor = [UIColor redColor];
bar.translucent = NO;
}else {
bar.tintColor = [UIColor redColor];
bar.opaque = YES;
}
}
Basado en las respuestas publicadas, esto funcionó para mí:
/* check for iOS 6 or 7 */
if ([[self navigationController].navigationBar respondsToSelector:@selector(setBarTintColor:)]) {
[[self navigationController].navigationBar setBarTintColor:[UIColor whiteColor]];
} else {
/* Set background and foreground */
[[self navigationController].navigationBar setTintColor:[UIColor whiteColor]];
[self navigationController].navigationBar.titleTextAttributes = [[NSDictionary alloc] initWithObjectsAndKeys:[UIColor blackColor],UITextAttributeTextColor,nil];
}
El código completo con la verificación de la versión.
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
// do stuff for iOS 7 and newer
[self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]];
}
else {
// do stuff for older versions than iOS 7
[self.navigationController.navigationBar setTintColor:[UIColor yellowColor]];
}
El comportamiento de tintColor para barras ha cambiado en iOS 7.0. Ya no afecta el fondo de la barra y se comporta como se describe para la propiedad tintColor agregada a UIView. Para matizar los antecedentes de la barra, usa -barTintColor.
navController.navigationBar.barTintColor = [UIColor navigationColor];
En iOS7, si su controlador de navegación está contenido en la barra de pestañas, en la vista dividida o en algún otro contenedor, para el aspecto de la barra de navegación que cambia globalmente, utilice el siguiente método ::
[[UINavigationBar appearanceWhenContainedIn:[UITabBarController class],nil] setBarTintColor:[UIColor blueColor]];
Estoy usando el siguiente código (en C #) para cambiar el color de la barra de navegación:
NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.Default);
NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.LandscapePhone);
NavigationController.NavigationBar.BackgroundColor = UIColor.Green;
El truco es que debes deshacerte de la imagen de fondo predeterminada y luego aparecerá el color.
Inserte el siguiente código en didFinishLaunchingWithOptions () en AppDelegate.m
[[UINavigationBar appearance] setBarTintColor:[UIColor
colorWithRed:26.0/255.0 green:184.0/255.0 blue:110.0/255.0 alpha:1.0]];
La propiedad de color de fondo se ignora en una UINavigationBar
, por lo que si desea ajustar la apariencia, debe usar el tintColor
o llamar a algunos de los otros métodos enumerados en "Personalizar la apariencia de la barra" de la referencia de la clase UINavigationBar (como setBackgroundImage:forBarMetrics:
.
Tenga en cuenta que la propiedad tintColor
funciona de manera diferente en iOS 7, por lo que si desea una apariencia coherente entre iOS 7 y la versión anterior con una imagen de fondo podría ser su mejor opción. También vale la pena mencionar que no puede configurar la imagen de fondo en el Guión gráfico, deberá crear una IBOutlet
en su UINavigationBar
y cambiarla en viewDidLoad
u otro lugar apropiado.
No estoy seguro de cambiar el tinte frente al color de fondo, pero así es como cambias el color del tinte de la barra de navegación:
Prueba este código ...
[navigationController.navigationBar setTintColor:[UIColor redColor];
// Rojo como un ejemplo.
Pruebe el siguiente código en el - (void)viewDidLoad
de su ViewController.m
[[[self navigationController] navigationBar] setTintColor:[UIColor yellowColor]];
esto funcionó para mí en iOS 6 ... Pruébalo ...
Puede verificar la versión de iOS y simplemente establecer el color del tinte de la barra de navegación.
if (SYSTEM_VERSION_LESS_THAN(@"7.0")) {
self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.9529 green:0.4392 blue:0.3333 alpha:1.0];
}else{
self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:0.9529 green:0.4392 blue:0.3333 alpha:1.0];
self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
Si desea cambiar el color de una barra de navegación, use la propiedad barTintColor
de la misma. Además, si configura cualquier color para tintColor
, afectará al elemento de la barra de navegación como un botón.
FYI, quieres mantener la barra de estilo de iOS 6, hacer que una imagen de fondo se parezca al estilo anterior y configurarla.
Para obtener más detalles, puede obtener más información en el siguiente enlace:
Si desea tener un color sólido para su barra de navegación en iOS 6 similar a iOS 7, use esto:
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundColor:[UIColor greenColor]];
en iOS 7 usa el barTintColor
así:
navigationController.navigationBar.barTintColor = [UIColor greenColor];
o
[[UINavigationBar appearance] setBarTintColor:[UIColor greenColor]];
Una cosa más, si desea cambiar el color de bg de navegación en UIPopover , necesita establecer barStyle
en UIBarStyleBlack
if([UINavigationBar instancesRespondToSelector:@selector(barTintColor)]){ //iOS7
navigationController.navigationBar.barStyle = UIBarStyleBlack;
navigationController.navigationBar.barTintColor = [UIColor redColor];
}
you can add bellow code in appdelegate.m .if your app is navigation based
// for background color
[nav.navigationBar setBarTintColor:[UIColor blueColor]];
// for change navigation title and button color
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],
NSForegroundColorAttributeName,
[UIFont fontWithName:@"FontNAme" size:20],
NSFontAttributeName, nil]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];