92 votes

Comment modifier la couleur d'arrière-plan de la barre d'UINavigation à partir de l'AppDelegate ?

Je sais comment changer le UINavigationBar image de fond en faisant

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

et je sais comment mettre la barre à différentes couleurs dans chaque Views ..... Maintenant je veux changer la couleur du fond sans utiliser d'image à une couleur solide de la app delegate . Je ne veux pas le définir à chaque fois à partir de 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 ça ne marche pas et je ne trouve nulle part un code qui fonctionne dans le délégué de l'application.

Quelqu'un peut-il m'indiquer la bonne direction ?

204voto

Seb Thiebaud Points 2429

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

105voto

LJ1 Points 1051

Pour changer la couleur de l'arrière-plan et non la teinte, le morceau de code suivant fonctionnera :

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

19voto

Lasse Bunk Points 775

Pour faire cela dans iOS 7 :

[[UINavigationBar appearance] setBarTintColor:myColor];

16voto

Dustin Williams Points 3832

Syntaxe Swift :

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

Je viens de mettre cela dans l'AppDelegate didFinishLaunchingWithOptions et cela persiste dans l'application.

9voto

paiv Points 2713

iOS 13.0 a introduit une nouvelle API pour cela :

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    let myColor = UIColor(hue: 0.4, saturation: 0.25, brightness: 1, alpha: 1)

    let barAppearance = UINavigationBarAppearance()
    barAppearance.backgroundColor = myColor

    let navigationBar = UINavigationBar.appearance()
    navigationBar.standardAppearance = barAppearance
    navigationBar.scrollEdgeAppearance = barAppearance // for scrollable content or large titles

    return true
}

navigation bar

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