Ce code peut changer la couleur d'un UINavigationBar
partout dans l'application. Cependant, j'ai remarqué que cela ne change pas le UIColor
du UINavigationBar
utilisé parUINavigationController
(le mien vient d'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];
Existe-t-il un moyen d'accéder à l'objet appearance
d'un UINavigationController's
barre de navigation? Je sais comment définir les teintes des contrôleurs individuels, mais je veux avoir un contrôle global sur leur apparence.
Mise à jour: c'était mon erreur, le code change le UIColor
de tous les UINavigationBars
, mais il nécessite que le contrôleur de navigation racine soit couvert et découvert (par exemple en présentant un contrôleur de vue modale), puis il se redessinera avec le nouveau UIColors
!
Je vous remercie!
La solution complète qui change la couleur de la barre de navigation instantanément et se souvient de la préférence pour les lancements ultérieurs peut être trouvée ici: iPhone iOS comment redessiner UINavigationBar à la demande?
Maintenant, dans iOS 8, nous pouvons définir la couleur de la teinte par ceci: -
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
Lorsque vous déclarez votre UINavigationController
, essayez ceci:
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];
Vous pouvez changer les couleurs des barres globalement en utilisant le proxy 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 redColor]];
[[UIToolbar appearance] setTintColor:[UIColor redColor]];
[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];