Couleur de text et de flèche de la barre de navigation IOS 7

Je souhaite que l'arrière-plan de la barre de navigation soit noir et que toutes les colors à l'intérieur soient blanches .

Donc, j'ai utilisé ce code:

[[UINavigationBar appearance] setTitleTextAtsortingbutes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], NSForegroundColorAtsortingbuteName, [UIColor whiteColor], NSForegroundColorAtsortingbuteName, [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], NSForegroundColorAtsortingbuteName, [UIFont fontWithName:@"Arial-Bold" size:0.0], NSFontAtsortingbuteName, nil]]; 

Mais la couleur du text du button arrière, la flèche et le button de la barre ont toujours la couleur bleue par défaut.
Comment changer ces colors comme sur l'image ci-dessous?

entrez la description de l'image ici

Le comportement de certaines des propriétés de UINavigationBar a été modifié depuis iOS 7 . Vous pouvez voir dans l'image ci-dessous:

entrez la description de l'image ici


Deux beaux liens que j'aimerais partager avec vous. Pour plus de détails, vous pouvez passer par ces liens:

  1. iOS 7 UI Transition Guide .
  2. Comment mettre à jour votre application pour iOS 7 .

La documentation Apple pour barTintColor dit:

Cette couleur est rendue translucide par défaut, sauf si vous définissez la propriété translucide sur NON.

Exemple de code:

 self.navigationController.navigationBar.barTintColor = [UIColor blackColor]; self.navigationController.navigationBar.tintColor = [UIColor whiteColor]; [self.navigationController.navigationBar setTitleTextAtsortingbutes:@{NSForegroundColorAtsortingbuteName : [UIColor whiteColor]}]; self.navigationController.navigationBar.translucent = NO; 

entrez la description de l'image ici

Celui-ci m'a pris environ une demi-journée pour comprendre, mais c'est ce qui a fonctionné pour moi. À l'intérieur du rootViewController qui initialise le navigationController, j'ai mis 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 setTitleTextAtsortingbutes:[NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAtsortingbuteTextColor]]; //set back button color [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAtsortingbutes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAtsortingbuteTextColor,nil] forState:UIControlStateNormal]; //set back button arrow color [self.navigationController.navigationBar setTintColor:[UIColor whiteColor]]; 

Mon post complet sur ceci ici

Swift3, ios 10

Pour affecter globalement la couleur, dans AppDelegate didFinishLaunchingWithOptions :

 let textAtsortingbutes = [NSForegroundColorAtsortingbuteName:UIColor.white] UINavigationBar.appearance().titleTextAtsortingbutes = textAtsortingbutes 

Swift 4, iOS 11

 let textAtsortingbutes = [NSAtsortingbutedSsortingngKey.foregroundColor:UIColor.white] UINavigationBar.appearance().titleTextAtsortingbutes = textAtsortingbutes 

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.SetTitleTextAtsortingbutes(new UITextAtsortingbutes() { TextColor = UIColor.White }); navigationBar.Translucent = false; 
 [[UINavigationBar appearance] setTitleTextAtsortingbutes:@{NSForegroundColorAtsortingbuteName : [UIColor whiteColor]}]; 

Swift / iOS8

 let textAtsortingbutes = NSMutableDictionary(capacity:1) textAtsortingbutes.setObject(UIColor.whiteColor(), forKey: NSForegroundColorAtsortingbuteName) navigationController?.navigationBar.titleTextAtsortingbutes = textAtsortingbutes 

Pour changer la couleur du titre UINavigationBar la bonne façon, utilisez ce code:

 [self.navigationController.navigationBar setTitleTextAtsortingbutes:[NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAtsortingbuteTextColor]]; 

UITextAtsortingbuteTextColor est obsolète dans la dernière version d'ios 7. Utilisez plutôt NSForegroundColorAtsortingbuteName .

Si vous cherchez à changer la taille du text du titre et la couleur du text, vous devez changer le NSDictionary titleTextAtsortingbutes , pour 2 de ses objects:

  self.navigationController.navigationBar.titleTextAtsortingbutes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:13.0],NSFontAtsortingbuteName, [UIColor whiteColor], NSForegroundColorAtsortingbuteName, 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 partage ici avec d'autres juste au cas où cela deviendrait utile pour quelqu'un. C'est ainsi que vous pouvez changer la couleur du text / 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 *navBarTextAtsortingbutes = [NSMutableDictionary dictionaryWithCapacity:1]; [navBarTextAtsortingbutes setObject:red forKey:NSForegroundColorAtsortingbuteName ]; self.navigationController.navigationBar.titleTextAtsortingbutes = navBarTextAtsortingbutes; 

Il semble que les controls d' Accessibility dans les iOS Settings remplacent à peu près tout ce que vous essayez de faire en termes de couleur pour les buttons de la barre de navigation. Assurez-vous que vous avez tous les parameters aux positions par défaut (régler le contraste d'augmentation, le text en gras , les forms de buttons, etc pour désactiver) 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 pourriez ne pas avoir besoin de les éteindre tous, mais je ne l'ai pas poursuivi plus loin.