web-dev-qa-db-fra.com

Comment changer la couleur de la barre de navigation dans iOS 7 ou 6?

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:

Enter image description here

64
EGHDK

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];

107
Mahesh

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]];
79
carmen_munich

// Dans iOS 7: -

[self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]];

// Dans iOS 6: -

[self.navigationController.navigationBar setTintColor:[UIColor yellowColor]];
36
Ashish

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é.

11
Charles A.

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];
}
5
null

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];
}
4
PRITAM SATPUTE

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;
    }
}
4
pizzamonster

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]];
}
4
kalan

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];
}
3
Roozbeh Zabihollahi

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]];
2
ARSHWIN DENUEV LAL
    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]];
2
Hitesh Vaghela

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]];
1
muzz

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:

https://developer.Apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html

1
Kyokook Hwang

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.

1
tomec

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 ..

0
geet Sebastian