J'ai une application qui a un UINavigationBar
et j'ai défini la couleur de la teinte sur noir comme ceci:
self.navigationController.navigationBar.tintColor = [UIColor blackColor];`
Je l'ai testé dans IOS 6 et il est noir. Cependant, il apparaît comme la barre de navigation par défaut lorsque j'ai essayé la même application dans iOS 7.
Comme le titre l'indique, cela ne fonctionne-t-il pas?
Vous devez définir la propriété barTintColor.
Vous pouvez spécifier une couleur de teinte personnalisée pour l'arrière-plan de la barre de navigation à l'aide du champ Teinte (barTintColor). La couleur de teinte d'arrière-plan par défaut est le blanc.
Depuis les documents iOS7: https://developer.Apple.com/library/content/documentation/UserExperience/Conceptual/UIKitUICatalog/UINavigationBar.html#//Apple_ref/doc/uid/TP40012857-UINavigationBar-SW1
Les réponses de Fernando et de sanjana ont la clé, mais je vais juste ajouter quelque chose pour le rendre plus clair et plus évident.
La barre de navigation a deux propriétés
C'est un peu trompeur lorsque vous ne pensez pas en termes iOS 7.
tintColor
change la couleur des boutons de votre barre de navigation. Pour modifier la couleur d'arrière-plan, vous devez définir la propriété barTintColor
.
self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];
self.navigationController.navigationBar.tintColor = [UIColor greenColor];
Cet extrait de code vous donnera une barre de navigation blanche avec des boutons verts.
J'ai utilisé le code suivant pour changer la couleur de la barre de navigation dans iOS7, j'ai ajouté cela dans la méthode déléguée de l'application "applicationDidFinishLaunch" et son travail fonctionne bien pour moi:
/* ios 7 Change */
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
{
[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x4B678B)];
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8];
shadow.shadowOffset = CGSizeMake(0, 1);
[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName,
shadow, NSShadowAttributeName,
[UIFont fontWithName:@"Helvetica Neue" size:21.0], NSFontAttributeName, nil]];
// self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
//[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
}
Le code suivant fonctionne pour moi:
self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
A eu le même problème, mais l'a résolu via un fichier de storyboard.
Essayez ce qui suit.
Sélectionner l'élément de barre de navigation dans la scène du contrôleur de navigation
Ouvrez l'onglet Utilitaires sur le côté droit de XCode
[UINavigationBar appearance].tintColor = [UIColor redColor];
if ([[UINavigationBar appearance] respondsToSelector:@selector(setBarTintColor:)]) {
[UINavigationBar appearance].barTintColor = [UIColor redColor];
}
//OU
self.navigationController.navigationBar.tintColor = [UIColor redColor];
if ([self.navigationController.navigationBar respondsToSelector:@selector(setBarTintColor:)]) {
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
}