50 votes

Comment puis-je désactiver la barre de navigation de l'ombre dans l'iOS 6 pour les barres de navigation personnalisée avec des images d'arrière-plan?

Il semble que dans iOS 6, une ombre portée est automatiquement ajouté à la barre de navigation, même lorsque vous définissez une image de fond personnalisée. Je suis assez sûr que ce n'était pas le cas avec iOS 5 que lorsque je test le même code dans l'iOS 5 et 6 sim, l'ombre apparaît dans iOS 6, mais pas 5.

Personne ne sait rien à ce sujet? Ou comment l'activer/la désactiver?

141voto

Kevin Fernandes Points 1026

Placez ceci dans votre AppDelegate

[[UINavigationBar appearance]setShadowImage:[[UIImage alloc] init]];

C'est ce qu'il a fait pour moi. Espérons que cela aide!

57voto

Hank Brekke Points 701

Je sais que cela a été résolu avec plus compliqué réponses ci-dessus, mais c'est le moyen le plus rapide et le plus simple je me suis caché dans l'ombre sous la barre de navigation.

self.navigationController.navigationBar.clipsToBounds = YES;

25voto

Lee Probert Points 1357

Note de la dev Apple docs sur le sujet de l' shadowImage de la propriété:

Discussion: La valeur par défaut est nulle, ce qui correspond à la valeur par défaut image de l'ombre. Lorsque la non-nul, cette propriété représente une coutume de l'ombre de l'image à afficher à la place de la valeur par défaut. Pour une mesure image de l'ombre à montré, une image de fond personnalisée doit également être défini avec l' setBackgroundImage:forBarMetrics: la méthode. Si l'arrière-plan par défaut l'image est utilisée, par défaut, à l'ombre de l'image sera utilisée indépendamment de la valeur de cette propriété.

Donc, pour utiliser le néant UIImage hack vous devez également mettre en place une barre de navigation personnalisée image d'arrière-plan. Cela peut être un néant de l'image, qui résultats dans un appartement agréable, propre "metro" style de la barre de navigation :

[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
        [[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];

19voto

Dima Korbin Points 197

Aussi, vous pouvez essayer ceci:

controller.navigationBar.shadowImage = [[[UIImage alloc] init] autorelease];

le contrôleur est un UINavigationController.

7voto

Steve Cotner Points 197

En général, non-NDA-violation de réponse:

Si vous ne voulez pas quelque chose qui sortait d'un calque, masque de la couche à ses limites.

[self.layer setMasksToBounds:YES];

Réglez la hauteur explicitement à 44 ans (ou 32 pour le paysage sur l'iPhone) si cela ne fonctionne pas sur son propre.

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