Je souhaite modifier la couleur de la barre de navigation, mais je ne suis pas sûr de devoir modifier la teinte ou l'arrière-plan. Je sais que iOS 7 vise un design plus plat (même recommandant de supprimer les dégradés ), mais je ne parviens pas à déchiffrer les deux. Même si je mets une couleur de fond, ça ne fait rien.
Dans cette image, l’arrière-plan est défini sur vert, mais la barre est toujours bleue:
Le comportement de tintColor pour les barres a changé sur iOS 7.0. Il n'affecte plus l'arrière-plan de la barre et se comporte comme décrit pour la propriété tintColor ajoutée à UIView. Pour teinter l'arrière-plan de la barre, utilisez -barTintColor.
navController.navigationBar.barTintColor = [UIColor navigationColor];
Si vous voulez avoir une couleur unie pour votre barre de navigation dans iOS 6 similaire à iOS 7, utilisez ceci:
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundColor:[UIColor greenColor]];
dans iOS 7 utilisez le barTintColor
comme ceci:
navigationController.navigationBar.barTintColor = [UIColor greenColor];
ou
[[UINavigationBar appearance] setBarTintColor:[UIColor greenColor]];
// Dans iOS 7: -
[self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]];
// Dans iOS 6: -
[self.navigationController.navigationBar setTintColor:[UIColor yellowColor]];
La propriété de couleur d'arrière-plan est ignorée sur un UINavigationBar
. Par conséquent, si vous souhaitez modifier l'aspect et la convivialité, vous devez utiliser tintColor
ou appeler d'autres méthodes répertoriées sous "Personnalisation de la barre". Apparence "de référence de la classe UINavigationBar (comme setBackgroundImage:forBarMetrics:
).
Sachez que la propriété tintColor
fonctionne différemment dans iOS 7. Par conséquent, si vous souhaitez une apparence cohérente entre iOS 7 et la version précédente, utilisez une image d'arrière-plan. Il est également intéressant de noter que vous ne pouvez pas configurer l’image d’arrière-plan dans le Storyboard, vous devrez créer un IBOutlet
sur votre UINavigationBar
et le changer dans viewDidLoad
ou dans d’autres. autre endroit approprié.
Encore une chose, si vous voulez changer la couleur de la navigation dans IPopover, vous devez définir barStyle
sur UIBarStyleBlack
if([UINavigationBar instancesRespondToSelector:@selector(barTintColor)]){ //iOS7
navigationController.navigationBar.barStyle = UIBarStyleBlack;
navigationController.navigationBar.barTintColor = [UIColor redColor];
}
Vous pouvez vérifier la version iOS et définir simplement la couleur de teinte de la barre de navigation.
if (SYSTEM_VERSION_LESS_THAN(@"7.0")) {
self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.9529 green:0.4392 blue:0.3333 alpha:1.0];
}else{
self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:0.9529 green:0.4392 blue:0.3333 alpha:1.0];
self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
Voici comment le configurer correctement pour iOS 6 et 7.
+ (void)fixNavBarColor:(UINavigationBar*)bar {
if (iosVersion >= 7) {
bar.barTintColor = [UIColor redColor];
bar.translucent = NO;
}else {
bar.tintColor = [UIColor redColor];
bar.opaque = YES;
}
}
Le code complet avec vérification de version.
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
// do stuff for iOS 7 and newer
[self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]];
}
else {
// do stuff for older versions than iOS 7
[self.navigationController.navigationBar setTintColor:[UIColor yellowColor]];
}
Basé sur posté répondu, cela a fonctionné pour moi:
/* check for iOS 6 or 7 */
if ([[self navigationController].navigationBar respondsToSelector:@selector(setBarTintColor:)]) {
[[self navigationController].navigationBar setBarTintColor:[UIColor whiteColor]];
} else {
/* Set background and foreground */
[[self navigationController].navigationBar setTintColor:[UIColor whiteColor]];
[self navigationController].navigationBar.titleTextAttributes = [[NSDictionary alloc] initWithObjectsAndKeys:[UIColor blackColor],UITextAttributeTextColor,nil];
}
Insérez le code ci-dessous dans didFinishLaunchingWithOptions () dans AppDelegate.m
[[UINavigationBar appearance] setBarTintColor:[UIColor
colorWithRed:26.0/255.0 green:184.0/255.0 blue:110.0/255.0 alpha:1.0]];
you can add bellow code in appdelegate.m .if your app is navigation based
// for background color
[nav.navigationBar setBarTintColor:[UIColor blueColor]];
// for change navigation title and button color
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],
NSForegroundColorAttributeName,
[UIFont fontWithName:@"FontNAme" size:20],
NSFontAttributeName, nil]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
Dans iOS7, si votre contrôleur de navigation est contenu dans une barre d'onglets, une vue partagée ou un autre conteneur, utilisez la méthode suivante pour modifier globalement l'apparence de la barre de navigation:
[[UINavigationBar appearanceWhenContainedIn:[UITabBarController class],nil] setBarTintColor:[UIColor blueColor]];
Si vous voulez changer la couleur d'une barre de navigation, utilisez la propriété barTintColor
. De plus, si vous définissez une couleur sur tintColor
, cela affecte l'élément de la barre de navigation comme un bouton.
Pour votre information, vous souhaitez conserver la barre de style iOS 6, faire en sorte qu'une image d'arrière-plan ressemble au style précédent et la définir.
Pour plus de détails, vous pouvez obtenir plus d'informations à partir du lien suivant:
J'utilise le code suivant (en C #) pour changer la couleur de la barre de navigation:
NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.Default);
NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.LandscapePhone);
NavigationController.NavigationBar.BackgroundColor = UIColor.Green;
L'astuce est que vous devez vous débarrasser de l'image d'arrière-plan par défaut pour que la couleur apparaisse.
Essayez le code ci-dessous dans la - (void)viewDidLoad
de votre ViewController.m
[[[self navigationController] navigationBar] setTintColor:[UIColor yellowColor]];
cela a fonctionné pour moi dans iOS 6 .. Essayez-le ..