solid color change bar ios uinavigationcontroller uinavigationbar tintcolor

ios - change - Establezca tintColor para UINavigationBar solo para el controlador de vista secundaria especĂ­fico



status bar background color swift (3)

¿Por qué no restablecer el color original cuando ves los defraudadores?

-(void)viewWillDisappear:(BOOL)animated { self.navigationController.navigationBar.tintColor = yourSavedColor; [super viewWillDisappear:animated]; }

Tengo una aplicación básica de detalles maestros. Dependiendo del elemento que se selecciona en la lista maestra, me gustaría establecer el tintColor de la barra de navegación en la vista de detalles solamente.

Establecí el color del tinte así: self.navigationController.navigationBar.tintColor = detailTintColor; en viewWillAppear: del controlador de detalles.

Sin embargo, esto también cambia el color de la barra de navegación del controlador principal a amarillo (debe permanecer rojo), que es visible como un parpadeo durante la animación de transición. Supongo porque solo hay una instancia de la barra de navegación.

Aquí una captura de pantalla para ilustrar el problema:

  • El icono "i" está en la barra de navegación del controlador de vista maestra y debe ser rojo, no amarillo

Solo tiene que cambiar el color del tinte de UINavigationBar en el UINavigationController Detalles en Storyboard:

Muestra de trabajo:

Puede usar la API de UIAppearance para obtener el mismo resultado subclasificando UINavigationController y configurando el controlador de detalles para que sea esa clase personalizada. Luego, usando UIAppearance API, establece el color del tinte UINavigationBar :

[[UINavigationBar appearanceWhenContainedIn:[DetailNavigationController class], nil] setTintColor:[UIColor redColor]];


En iOS 8 establecemos el color del tinte por esto:

self.navigationController.navigationBar.barTintColor = [UIColor redColor];