ios - problemas - pantalla ipad falla
¿Cómo cambiar el color de la barra de navegación en iOS 7? (18)
¿Cómo cambio el color de la barra de navegación en iOS 7?
Básicamente, quiero lograr algo como la barra de navegación de Twitter (Twitter actualizado para iOS7
). Yo incrusté 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 utilidades en la parte superior. Parece que no puedo encontrar una opción en mi storyboard
.
Agregue 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]];
}
El comportamiento de tintColor
para barras ha cambiado en iOS 7.0. Ya no afecta el fondo del bar.
De la documentación:
BarTintColor Class Reference
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 de forma predeterminada a menos que establezca la propiedad translúcida en NO
.
Disponibilidad
Disponible en iOS 7.0 y versiones posteriores.
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 interfaz de usuario 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 utilizando xib
En viewDidLoad
, establece:
self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
Cambia ( blueColor
) al color que quieras.
En iOS 7 debes usar la propiedad -barTintColor:
navController.navigationBar.barTintColor = [UIColor barColor];
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 estoy diciendo que esté mal hacerlo programáticamente, pero hay gente como yo ... esto es para ustedes.
En una aplicación basada en Navegación puede poner 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 una aplicación basada en navegación puedes cambiar de 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];
}
Esta pregunta y estas respuestas son útiles. Con ellos pude configurar el color de mi barra de navigationBar
azul oscuro deseado con título en blanco y texto de 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.
Es posible que haya pasado por alto esa solución en una de las respuestas anteriores, pero pude hacer ese cambio al agregar esta línea a la vista del viewController
superior de viewDidLoad
:
[self.navigationController.navigationBar setBarStyle:UIStatusBarStyleLightContent];
Hacer lo que se hizo en la pregunta original (para obtener el aspecto de la barra de navegación de Twitter anterior, fondo azul con texto en blanco) es muy fácil de usar solo usando el Interface Builder en Xcode.
- Usando el esquema del documento, seleccione su barra de navegación.
- En el inspector de atributos, en el grupo de la 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 íconos y texto en la barra de estado se verán de color blanco cuando la aplicación se esté ejecutando.
- En el mismo grupo de la barra de navegación, cambie el Tinte de la barra al color que desee.
- Si tiene elementos del botón de la barra en su barra de navegación, estos seguirán mostrando su texto en el color azul predeterminado, por lo que en el grupo Atributos Inspector, Ver, cambie el Tinte a Color blanco.
Eso debería conseguirte lo que quieres. Aquí hay una captura de pantalla que facilitaría ver dónde realizar los cambios.
Tenga en cuenta que cambiar solo el Tinte de la barra no cambia el color del texto en la Barra de navegación o en la Barra de estado. El estilo también necesita ser cambiado.
Para cambiar rápidamente el color de la barra de navegación:
self.navigationController?.navigationBar.barTintColor = UIColor.redColor()
cambiar la fuente del título, tamaño, color:
self.title = "title"
self.navigationController?.navigationBar.titleTextAttributes = [
NSForegroundColorAttributeName : UIColor.whiteColor(),
NSFontAttributeName : UIFont(name: "Futura", size: 30)!
]
Para completar el código de Rajneesh071, es posible que también desee configurar 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];
}
Para el color:
[[UINavigationBar appearance] setBarTintColor:[UIColor blackColor]];
Para imagen
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBar_320X44.png"] forBarMetrics:UIBarMetricsDefault];
Si desea utilizar un código hexadecimal, esta es la mejor manera de hacerlo.
Primero, define esto en la parte superior de tu 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", coloque esto:
[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x00b0f0)];
Pon tu código hexadecimal en lugar de 00b0f0.
Si necesita soportar ios6 e ios7, entonces obtiene ese azul claro 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];
}
}
#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]];
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
}
//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;
}
self.navigationBar.barTintColor = [UIColor blueColor];
self.navigationBar.tintColor = [UIColor whiteColor];
self.navigationBar.translucent = NO;
// *barTintColor* sets the background color
// *tintColor* sets the buttons color