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?
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];
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];
Pour cela dans iOS 7:
[[UINavigationBar appearance] setBarTintColor:myColor];
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
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é!
Swift:
self.navigationController?.navigationBar.barTintColor = UIColor.red
self.navigationController?.navigationBar.isTranslucent = false
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.
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];
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