216 votes

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

Comment modifier la couleur de la barre de navigation dans iOS 7 ?

En gros, je veux réaliser quelque chose comme la barre de navigation de Twitter (mise à jour de Twitter pour iOS7 c'est-à-dire). J'ai intégré une barre de navigation au sommet d'une view controller . Tout ce que je veux, c'est changer la couleur de la barre de navigation en bleu clair, ainsi que la barre d'utilité en haut. Je n'arrive pas à trouver une option dans ma page d'accueil. storyboard .

0 votes

0 votes

[[UINavigationBar appearance] setBarTintColor :[UIColor blackColor]] ; cela fonctionnera à partir d'ios 7.

1 votes

320voto

Rajneesh071 Points 10459

Le comportement de tintColor pour les barres a changé dans iOS 7.0. Il n'affecte plus l'arrière-plan de la barre.

Dans la documentation :

barTintColor Référence de la classe

La couleur de teinte à appliquer à l'arrière-plan de la barre de navigation.

@property(nonatomic, retain) UIColor *barTintColor

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

Disponibilité

Disponible à partir de la version 7.0 d'iOS.

Déclaré dans
UINavigationBar.h

Code

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7) {
    // iOS 7.0 or later   
    self.navigationController.navigationBar.barTintColor = [UIColor redColor];
    self.navigationController.navigationBar.translucent = NO;
}else {
    // iOS 6.1 or earlier
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
}

Nous pouvons également l'utiliser pour vérifier la version d'iOS comme indiqué dans le document Guide de transition de l'interface utilisateur d'iOS 7

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
        // iOS 6.1 or earlier
        self.navigationController.navigationBar.tintColor = [UIColor redColor];
    } else {
        // iOS 7.0 or later     
        self.navigationController.navigationBar.barTintColor = [UIColor redColor];
        self.navigationController.navigationBar.translucent = NO;
    }

EDITAR Utilisation de xib

enter image description here

3 votes

Mais où puis-je placer ce code ? Je suis très novice en la matière, hahah. Je l'ai placé dans le délégué de l'application et il ne semble pas vraiment faire grand chose. Il se construit très bien pourtant.

1 votes

Dans le viewController

1 votes

Je le mettrais dans le viewDidLoad de votre viewController.

129voto

alondono Points 83

Il est très facile de faire ce que la question initiale demandait, c'est-à-dire d'obtenir l'ancien aspect de la barre de navigation de Twitter (fond bleu et texte blanc), en utilisant simplement l'Interface Builder de Xcode.

  • En utilisant le plan du document, sélectionnez votre barre de navigation.
  • Dans l'inspecteur des attributs, dans le groupe Barre de navigation, changez le style de Défaut à Noir. La couleur d'arrière-plan des barres de navigation et d'état devient noire, et leur texte devient blanc. Ainsi, la batterie et les autres icônes et textes de la barre d'état seront blancs lorsque l'application est en cours d'exécution.
  • Dans le même groupe de la barre de navigation, changez la teinte de la barre pour la couleur de votre choix.
  • Si votre barre de navigation comporte des éléments de type bouton de barre, leur texte sera toujours affiché dans la couleur bleue par défaut. Dans l'inspecteur d'attributs, dans le groupe Affichage, changez la teinte en Couleur blanche.

Ça devrait vous donner ce que vous voulez. Voici une capture d'écran qui vous permettra de voir plus facilement où effectuer les modifications.

Where to make the necessary changes, including the result in iOS Simulator

Notez que le fait de modifier uniquement la teinte de la barre ne change pas la couleur du texte dans la barre de navigation ou la barre d'état. Le style doit également être modifié.

0 votes

La sélection du noir pour iOS 9 est dépréciée, y a-t-il une chance d'avoir une réponse actualisée ?

0 votes

@Rob85 Je ne suis pas devant Xcode en ce moment, mais lorsque Xcode 7 (avec iOS 9) est sorti, j'ai vérifié que ces instructions étaient toujours à jour. Assurez-vous que la barre de navigation est sélectionnée, le style noir devrait être dans l'inspecteur d'attributs de la barre de navigation.

2 votes

@Rob85 J'ai vérifié le site web des développeurs d'Apple, et les styles Default y Black sont toujours disponibles dans iOS 9. Ceux qui sont dépréciés sont BlackOpaque y BlackTranslucent qui ont été remplacés par une combinaison de Black et la case à cocher Translucide. UIBarStyle sur le site des développeurs d'Apple

79voto

pNre Points 2208
self.navigationBar.barTintColor = [UIColor blueColor];
self.navigationBar.tintColor = [UIColor whiteColor];
self.navigationBar.translucent = NO;

// *barTintColor* sets the background color
// *tintColor* sets the button's color

4 votes

Et où puis-je mettre ce code exactement ? Désolé pour cette question de débutant.

2 votes

Le code peut être placé dans la méthode - (void)viewDidLoad du contrôleur de navigation

2 votes

Dans iOS 9, le fait de définir la barTintColor sur noir rendra l'heure, le nom de l'appareil et la batterie noirs également, de sorte que vous ne pourrez pas les voir. Pour éviter cela, au lieu d'utiliser barTintColor, utilisez self.navigationController.navigationBar.barStyle = UIBarStyleBlack ;

46voto

Rauru Ferro Points 1206

Dans une application basée sur la navigation, vous pouvez placer le code dans AppDelegate. Un code plus détaillé pourrait être :

// Navigation bar appearance (background and title)

[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor titleColor], NSForegroundColorAttributeName, [UIFont fontWithName:@"FontNAme" size:titleSize], NSFontAttributeName, nil]];

[[UINavigationBar appearance] setTintColor:[UIColor barColor]];

// Navigation bar buttons appearance

[[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor textBarColor], NSForegroundColorAttributeName, shadowColor, NSShadowAttributeName, [UIFont fontWithName:@"FontName" size:titleSize], NSFontAttributeName, nil];

6 votes

Ajouter [[UINavigationBar appearance] setBarTintColor:[UIColor barColor]]; pour iOS 7

25voto

zeezoo Points 151

Sur viewDidLoad , réglé :

    self.navigationController.navigationBar.barTintColor = [UIColor blueColor];

Changement ( blueColor ) à la couleur que vous souhaitez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X