UINavigationController cambia la barra de navigation de color de tinte de forma global y programática

Este código puede cambiar el color de un UINavigationBar cualquier parte de la aplicación. Sin embargo, noté que no cambia el UIColor de UINavigationBar utilizado por UINavigationController (el mío proviene de un UIStoryboard ).

 UIColor* navBarColor = [UIColor colorWithRed:arc4random()%100/100.0 green:arc4random()%100/100.0 blue:arc4random()%100/100.0 alpha:1]; [[UINavigationBar appearance] setTintColor:navBarColor]; [[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent]; [[UINavigationBar appearance] setAlpha:0.7]; 

¿Hay alguna forma de acceder al object de UINavigationController's barra de navigation UINavigationController's ? Sé cómo configurar tintes de controlleres individuales, pero quiero tener un control global sobre cómo se ven.

Actualización: ¡Este fue mi error, el código cambia el UIColor de todas las UINavigationBars , pero requiere que el controller de navigation raíz se cubra y descubra (por ejemplo, presentando un controller de vista modal), luego se volverá a dibujar con nuevos UIColors !

¡Gracias!

Puede cambiar los colors de la barra globalmente usando proxy de appearance :

 NSDictionary *textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor darkGrayColor], UITextAttributeTextColor, [UIColor whiteColor], UITextAttributeTextShadowColor, nil]; [[UINavigationBar appearance] setTitleTextAttributes:textTitleOptions]; textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor darkGrayColor], UITextAttributeTextColor, nil]; [[UINavigationBar appearance] setTintColor:[UIColor networkingColor]]; [[UIToolbar appearance] setTintColor:[UIColor networkingColor]]; [[UIBarButtonItem appearance] setTintColor:[UIColor networkingColor]]; 

Cuando declara su UINavigationController , intente esto:

 UINavigationController *myNavController = [[UINavigationController alloc] initWithRootViewController:myRootViewController]; myNavController.navigationBar.tintColor = [UIColor colorWithRed:arc4random() % 100 / 100.0f green:arc4random() % 100 / 100.0f blue:arc4random() % 100 / 100.0f alpha:1.0f]; 

Ahora en iOS 8 podemos configurar el color de tinte con esto:

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

La solución completa que cambia el color de la barra de navigation al instante y restring la preference por los siguientes lanzamientos se encuentra aquí: iPhone iOS cómo volver a dibujar UINavigationBar a pedido?