33

Me tropecé con esto muchas veces, nunca encontré una solución. navigationbar de un UINavigationController se puede configurar para translúcida negro como:Cambie el color del negro translúcido UINavigationBar

self.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent; 

Además, hay una propiedad translúcida en UINavigationBar, los documentos dicen:

Cuando SÍ, la barra de navegación se dibuja con opacidad parcial , independientemente del estilo de barra. La cantidad de opacidad es fija y no puede ser modificada. Se permite establecer el valor de esta propiedad cuando la barra de navegación está siendo administrada por un objeto del controlador de navegación.

me trataron

self.navigationcontroller.navigationBar.tintColor=[UIColor blueColor]; 
self.navigationcontroller.navigationBar.translucent=YES; 

y mil variaciones: Establecer la propiedad translúcida en primer lugar, de colocarlo en la AppDelegate y en el ViewController, estableciendo el primer barstyle. El resultado es siempre el mismo: Sin transparencia. De ahí mi pregunta:

¿Es realmente posible cambiar el color de un UINavigationBar translúcida a algo diferente de negro (preferiblemente dentro de un UINavigationController) ?.

Espero que haya una solución de revisión segura.

Gracias, m

Respuesta

50

Una vez que se dé cuenta, es bastante simple:

self.navigationController.navigationBar.tintColor = [UIColor blueColor]; 
self.navigationController.navigationBar.alpha = 0.7f; 
self.navigationController.navigationBar.translucent = YES; 

La propiedad translucent parece sólo para determinar wether la vista principal debe ser visible debajo de la barra de navegación, y cambia el tamaño del punto de vista apropiadamente

+0

+1, funciona para mí. – SmallChess

+1

+1 Es aproximadamente el mismo para MonoTouch –

+9

El efecto secundario que noto de esto es que cambia el alfa para toda la barra de navegación (no solo el fondo). Específicamente, el título no es blanco "brillante", pero parece ser 0.7f alfa. – bobtheowl2

17

para imitar con mayor precisión el efecto translúcido, lo que significa que sólo el fondo de la barra de navegación es translúcido, y los botones, título y todo lo demás son opacas, puede hacerlo de esta manera:

self.navigationController.navigationBar.translucent = YES; 
[(UIView*)[self.navigationController.navigationBar.subviews objectAtIndex:0] setAlpha:0.7f]; 
+1

Funcionó para mí. Me gusta más esta solución. – Ali

4

Al menos en iOS 6 en un iPhone 4S, se puede hacer una barra de navegación de color translúcido como esto:

self.navigationController.navigationBar.tintColor = [UIColor blueColor]; 
self.navigationController.navigationBar.translucent = YES; 

El valor alfa no parece ser necesario más. Esto también deja mi título blanco brillante y mis botones opacos.

0

Aquí está la solución:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:3.f/255.f green:8.f/255.f blue:61.f/255.f alpha:1]]; 
self.navigationController.navigationBar.translucent = YES; 
self.navigationController.navigationBar.barTintColor = [UINavigationBar appearance].barTintColor; 
Cuestiones relacionadas