web-dev-qa-db-fra.com

Comment changer la couleur d'arrière-plan UINavigationBar à partir d'AppDelegate

Je sais comment changer l'image de fond UINavigationBar en faisant

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nabbar"] forBarMetrics:UIBarMetricsDefault];

et je sais comment régler la barre sur différentes couleurs dans chaque Views..... Je souhaite maintenant modifier la couleur d'arrière-plan sans utiliser d'image en une couleur unie à partir du app delegate. Je ne veux pas le définir à chaque fois dans chaque vue et je ne veux pas écrire un CGRect.

J'ai essayé [[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithRed:33/255.0 green:34/255.0 blue:36/255.0 alpha:1.0]]; mais je ne travaille pas et je ne trouve aucun code qui fonctionne dans le délégué de l'application.

Quelqu'un pourrait-il s'il vous plaît me diriger dans la bonne direction?

87
Jonathan Thurft

Vous pouvez utiliser [[UINavigationBar appearance] setTintColor:myColor];

Depuis iOS 7, vous devez définir [[UINavigationBar appearance] setBarTintColor:myColor]; et aussi [[UINavigationBar appearance] setTranslucent:NO].

[[UINavigationBar appearance] setBarTintColor:myColor];
[[UINavigationBar appearance] setTranslucent:NO];
196
Seb Thiebaud

Pour changer la couleur de fond et non la teinte, le code suivant fonctionnera:

[self.navigationController.navigationBar setBarTintColor:[UIColor greenColor]];
[self.navigationController.navigationBar setTranslucent:NO];
102
LJ1

Pour cela dans iOS 7:

[[UINavigationBar appearance] setBarTintColor:myColor];
18
Lasse Bunk

syntaxe Swift:

    UINavigationBar.appearance().barTintColor = UIColor.whiteColor() //changes the Bar Tint Color

Je viens de mettre cela dans le AppDelegate didFinishLaunchingWithOptions et il persiste dans toute l'application

14
Dustin Williams

Vous pouvez facilement le faire avec Xcode 6.3.1. Sélectionnez votre barre de navigation dans le contour du document. Sélectionnez l'inspecteur d'attributs. Décochez Translucide. Réglez Bar Tint sur la couleur de votre choix. Terminé!

6
ronm333

Swift:

self.navigationController?.navigationBar.barTintColor = UIColor.red
self.navigationController?.navigationBar.isTranslucent = false
5
Hemang

Comme le mentionnent les autres réponses, vous pouvez utiliser setTintColor:, mais vous voulez une couleur unie et il n’est pas possible de régler la couleur de teinte autant que vous le voulez.

La solution consiste à créer une image par programme et à définir cette image comme image d'arrière-plan pour toutes les barres de navigation via UIAppearance. À propos de la taille de l'image, je ne sais pas si une image de 1x1 pixel fonctionnerait ou si vous avez besoin de la taille exacte de la barre de navigation. Vérifiez la deuxième réponse de cette question pour savoir comment créer l'image.

En guise de conseil, je n'aime pas "surcharger" le délégué de l'application avec ce genre de choses. Ce que j'ai tendance à faire, c'est de créer une classe nommée AppearanceConfiguration avec une seule méthode publique configureAppearance, dans laquelle je définis tous les éléments UIAppearance souhaités, puis j'appelle cette méthode à partir du délégué de l'application.

3
e1985

Vous pouvez définir la couleur de fond UINavigation en utilisant ce code dans n’importe quel contrôleur de vue.

self.navigationController.navigationBar.backgroundColor = [UIColor colorWithRed:10.0f/255.0f green:30.0f/255.0f blue:200.0f/255.0f alpha:1.0f];
2
amar

Dans Swift 4.2 et Xcode 10.1

Vous pouvez modifier la couleur de votre barre de navigation de votre AppDelegate directement à l'ensemble de votre projet.

Dans didFinishLaunchingWithOptions launchOptions:, Écrivez ci-dessous en lignes de code

UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().barTintColor = UIColor(red: 2/255, green: 96/255, blue: 130/255, alpha: 1.0)

Ici

tintColor sert à définir des images d'arrière-plan telles que des images de lignes de menu, de menu arrière, etc. (voir l'image de menu ci-dessous, à gauche et à droite)

barTintColor correspond à la couleur d'arrière-plan de la barre de navigation.

Si vous souhaitez définir une couleur spécifique pour la barre de navigation du contrôleur de vue, écrivez le code ci-dessous dans viewDidLoad()

//Add navigation bar colour
navigationController?.navigationBar.barTintColor = UIColor(red: 2/255, green: 96/255, blue: 130/255, alpha: 1.0)
navigationController?.navigationBar.tintColor = UIColor.white

enter image description here

0
iOS