uinavigationcontroller uinavigationbar uicolor translucency

uinavigationcontroller - Cambia el color de UINavigationBar negro translĂșcido



uicolor translucency (4)

Me tropecé con esto muchas veces, nunca encontré una solución. La barra de navegación de un UINavigationController se puede configurar en negro translúcido como:

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 la barra. La cantidad de opacidad es fija y no se puede cambiar. 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.

Lo intenté

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

y mil variaciones: primero se establece la propiedad translúcida, se establece en AppDelegate y en ViewController, estableciendo primero el estilo de barra. El resultado es siempre el mismo: sin transparencia. De ahí mi pregunta:

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

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

Gracias


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

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

La configuración alfa ya no parece ser necesaria. Esto también deja mi título blanco brillante y mis botones opacos.


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;


Para imitar con mayor precisión el efecto translúcido, lo que significa que solo el fondo de la barra de navegación es translúcido, y los botones, el título y todo lo demás son opacos, puedes hacer esto:

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


Una vez que lo sabes, es bastante simple:

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

La propiedad translucent solo parece determinar si la vista principal debe ser visible debajo de la barra de navegación y cambia el tamaño de la vista de forma adecuada.