J'essaie de personnaliser la barre de navigation d'un contrôleur de navigation dans iOS7 et la couleur du titre ne change pas. Je fais ce qui suit:
[navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:46.0f/256.0f green:46.0f/256.0f blue:46.0f/256.0f alpha:1]];
[navigationController.navigationBar setTranslucent:NO];
[navigationController.navigationBar setTitleTextAttributes:@{[UIColor whiteColor]:UITextAttributeTextColor}];
[self presentViewController:navigationController animated:YES completion:nil];
La translucidité de la barre de navigation est désactivée et il fait sombre, mais le titre reste également sombre. J'ai également essayé de créer une étiquette personnalisée et de la définir comme vue du titre sans trop de chance.
Comment changer la couleur du titre?
[navigationController.navigationBar setBarStyle:UIBarStyleBlack];
L'API d'apparence continue d'évoluer et UITextAttributeTextColor est désormais remplacé par NSForegroundColorAttributeName.
[navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
Je vais ajouter deux choses:
La clé vient en premier, puis l'objet.
Si vous souhaitez modifier globalement les attributs de titre de votre contrôleur de navigation, utilisez l’apparence api:
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]}];
Je mettrais cet appel d'API d'apparence dans la méthode didFinishLaunchingWithOptions de votre délégué d'application.
UPDATE: Peut également afficher les équivalents Swift.
Pour mettre à jour la barre de navigation pour un contrôleur de vue individuel, vous pouvez utiliser:
self.navigationController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
Pour modifier l'apparence de la barre de navigation dans l'ensemble d'une application, vous pouvez utiliser:
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
Ne fonctionne pas pour moi . Utilisation de UINavigation en tant que contrôleur de vue modale.
Apparemment, la couleur du titre doit être définie au niveau d'application
Modifier:
Le meilleur moyen est de changer le titre de la navigation dans chaque contexte VC:
[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName,nil]];
Dans Swift, vous procédez comme suit:
self.navigationController.navigationBar.titleTextAttributes = [
NSForegroundColorAttributeName : UIColor.redColor(),
NSFontAttributeName : UIFont.systemFontOfSize(20)
]
Version Swift + UIAppearance:
UINavigationBar.appearance().barTintColor = .blackColor()
UINavigationBar.appearance().barStyle = .Black
Le problème dans le code de l'OP est cette ligne:
[navigationController.navigationBar setTitleTextAttributes:@{[UIColor whiteColor]:UITextAttributeTextColor}];
Le nom et la valeur de l'attribut de couleur du texte sont mélangés. CA devrait etre
[navigationController.navigationBar setTitleTextAttributes:@{UITextAttributeTextColor:[UIColor whiteColor]}];
ressemble réellement à un bug. Essayer
myViewcontroller.title = @"";
navigationController.navigationBar.barStyle = UIBarStyleBlack;
myViewcontroller.title = @"TITLE";
travaux.
NSForegroundColorAttributeName a été renommé en NSAttributedString.Key.foregroundColor
let navBarAppearance = self.navigationController!.navigationBar
navBarAppearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]
J'ai utilisé UIColor.white , insérez simplement n'importe quel UIColor vous voulez que le titre soit.