web-dev-qa-db-fra.com

Changer la couleur de l'UINavigationBar noir translucide

Je suis tombé dessus plusieurs fois, je n'ai jamais trouvé de solution. La barre de navigation d'un UINavigationController peut être définie sur noir translucide comme:

self.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent;

En outre, il existe une propriété translucide dans UINavigationBar, les documents disent:

Lorsque OUI, la barre de navigation est dessinée avec une opacité partielle, quel que soit le style de barre. La quantité d'opacité est fixe et ne peut pas être modifiée. Il est possible de définir la valeur de cette propriété lorsque la barre de navigation est gérée par un objet contrôleur de navigation.

J'ai essayé

self.navigationcontroller.navigationBar.tintColor=[UIColor blueColor];
self.navigationcontroller.navigationBar.translucent=YES;

et mille variantes: définir la propriété translucide en premier, la définir dans l'AppDelegate et dans le ViewController, définir le style de barre en premier. Le résultat est toujours le même: Pas de transparence. D'où ma question:

Est-il vraiment possible de changer la couleur d'un UINavigationBar translucide en quelque chose de différent du noir (de préférence dans un UINavigationController)?.

J'espère qu'il existe une solution sûre pour les avis.

Merci, m

34
marimba

Une fois que vous le savez, c'est assez simple:

self.navigationController.navigationBar.tintColor = [UIColor blueColor];
self.navigationController.navigationBar.alpha = 0.7f;
self.navigationController.navigationBar.translucent = YES;

La propriété translucent semble uniquement déterminer si la vue principale doit être visible sous la barre de navigation et redimensionne la vue de manière appropriée.

50
marimba

Pour imiter plus précisément l'effet translucide, ce qui signifie que seul l'arrière-plan de la barre de navigation est translucide et que les boutons, le titre et tout le reste sont opaques, vous pouvez faire comme ceci:

self.navigationController.navigationBar.translucent = YES;
[(UIView*)[self.navigationController.navigationBar.subviews objectAtIndex:0] setAlpha:0.7f];
17
Nicu Surdu

Au moins dans iOS 6 sur un iPhone 4S, vous pouvez créer une barre de navigation translucide colorée comme celle-ci:

self.navigationController.navigationBar.tintColor = [UIColor blueColor];
self.navigationController.navigationBar.translucent = YES;

Le paramètre alpha ne semble plus être nécessaire. Cela laisse également mon titre blanc brillant et mes boutons opaques.

4
Laura

Voici la solution:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:3.f/255.f green:8.f/255.f blue:61.f/255.f alpha:1]];
self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.barTintColor = [UINavigationBar appearance].barTintColor;
0
Maksim Usenko