raros problemas pantalla mal fallo falla colores color cambio ios ios7 storyboard uikit uinavigationbar

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