Je souhaite définir l'arrière-plan de la barre de navigation sur noir et toutes les couleurs à l'intérieur de celle-ci sur blanc.
Donc, j'ai utilisé ce code:
[[UINavigationBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor],
NSForegroundColorAttributeName,
[UIColor whiteColor],
NSForegroundColorAttributeName,
[NSValue valueWithUIOffset:UIOffsetMake(0, -1)],
NSForegroundColorAttributeName,
[UIFont fontWithName:@"Arial-Bold" size:0.0],
NSFontAttributeName,
nil]];
Mais le bouton précédent couleur du texte, flèche et bouton en forme de barre ont toujours la valeur par défaut couleur bleue.
Comment changer ces couleurs comme sur l'image ci-dessous?
Le comportement de certaines des propriétés de UINavigationBar
a changé de iOS 7 . Vous pouvez voir dans l'image ci-dessous:
Deux beaux liens que j'aimerais partager avec vous. Pour plus de détails, vous pouvez passer par ces liens:
Documentation Apple pour barTintColor dit:
Cette couleur est rendue translucide par défaut, sauf si vous définissez la propriété translucent sur NO.
Exemple de code:
self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
[self.navigationController.navigationBar
setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
self.navigationController.navigationBar.translucent = NO;
Celui-ci m'a pris environ une demi-journée pour comprendre, mais c'est ce qui a fonctionné pour moi. Dans le rootViewController qui initialise le navigationController, j'ai placé ce code dans ma méthode viewDidAppear:
//set bar color
[self.navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:85.0/255.0 green:143.0/255.0 blue:220.0/255.0 alpha:1.0]];
//optional, i don't want my bar to be translucent
[self.navigationController.navigationBar setTranslucent:NO];
//set title and title color
[self.navigationItem setTitle:@"Title"];
[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor]];
//set back button color
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor,nil] forState:UIControlStateNormal];
//set back button arrow color
[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];
Mon post complet sur ce ici
Swift3, ios 1
Pour affecter globalement la couleur, dans AppDelegate didFinishLaunchingWithOptions
:
let textAttributes = [NSForegroundColorAttributeName:UIColor.white]
UINavigationBar.appearance().titleTextAttributes = textAttributes
Swift 4, iOS 11
let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
UINavigationBar.appearance().titleTextAttributes = textAttributes
La réponse de Vin a bien fonctionné pour moi. Voici la même solution pour les développeurs C # utilisant Xamarin.iOS/MonoTouch:
var navigationBar = NavigationController.NavigationBar; //or another reference
navigationBar.BarTintColor = UIColor.Blue;
navigationBar.TintColor = UIColor.White;
navigationBar.SetTitleTextAttributes(new UITextAttributes() { TextColor = UIColor.White });
navigationBar.Translucent = false;
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
Swift/iOS8
let textAttributes = NSMutableDictionary(capacity:1)
textAttributes.setObject(UIColor.whiteColor(), forKey: NSForegroundColorAttributeName)
navigationController?.navigationBar.titleTextAttributes = textAttributes
Pour changer la couleur de UINavigationBar
title correctement, utilisez ce code:
[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor]];
UITextAttributeTextColor
est obsolète dans la dernière version de ios 7. Utilisez NSForegroundColorAttributeName
à la place.
Si vous souhaitez modifier le titre taille du texte et le couleur du texte, vous devez modifier le NSDictionary titleTextAttributes , pour 2 de ses objets:
self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:13.0],NSFontAttributeName,
[UIColor whiteColor], NSForegroundColorAttributeName,
nil];
Je pense que les réponses précédentes sont correctes, c’est une autre façon de faire la même chose. Je le partage ici avec d'autres, au cas où cela deviendrait utile pour quelqu'un. Voici comment modifier la couleur du texte/titre de la barre de navigation dans ios7:
UIColor *red = [UIColor colorWithRed:254.0f/255.0f green:0.0f/255.0f blue:0.0f/255.0f alpha:1.0];
NSMutableDictionary *navBarTextAttributes = [NSMutableDictionary dictionaryWithCapacity:1];
[navBarTextAttributes setObject:red forKey:NSForegroundColorAttributeName ];
self.navigationController.navigationBar.titleTextAttributes = navBarTextAttributes;
Il semble que les commandes Accessibility
du iOS Settings
remplacent pratiquement tout ce que vous essayez de faire en termes de couleur pour les boutons de la barre de navigation. Assurez-vous que tous les paramètres sont réglés sur les positions par défaut (régler le contraste, texte en gras, les formes des boutons, etc. sur Off), sinon vous ne verrez rien changer. Une fois que je l'ai fait, tout le code de changement de couleur a commencé à fonctionner comme prévu. Vous n'aurez peut-être pas besoin de les éteindre tous, mais je ne poursuivis pas plus loin.