Comment rendre transparent un UINavigationBar ? Bien que je veuille que ses éléments de barre restent visibles.
235
Comment rendre transparent un UINavigationBar ? Bien que je veuille que ses éléments de barre restent visibles.
Si quelqu'un se demande comment y parvenir dans iOS 7+, voici une solution (compatible iOS 6 aussi)
Dans Objective-C
[self.navigationBar setBackgroundImage:[UIImage new]
forBarMetrics:UIBarMetricsDefault];
self.navigationBar.shadowImage = [UIImage new];
self.navigationBar.translucent = YES;
Dans swift 3 (iOS 10)
self.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.isTranslucent = true
En rapide 2
self.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.translucent = true
La définition translucent
de YES
sur dans la barre de navigation fait l'affaire, en raison d'un comportement décrit dans la UINavigationBar
documentation. Je vais rapporter ici le fragment pertinent:
Si vous définissez cette propriété
YES
sur une barre de navigation avec une image d'arrière-plan personnalisée opaque, la barre de navigation appliquera une opacité système inférieure à 1,0 à l'image.
[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = nil; self.navigationController.navigationBar.translucent = NO;
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) self.navigationController?.navigationBar.shadowImage = UIImage() self.navigationController?.navigationBar.translucent = true
Dans iOS5, vous pouvez le faire pour rendre la barre de navigation transparente:
la source
[[UINavigationBar appearance] setShadowImage: [[UIImage alloc] init]];
Depuis IOS7:
la source
Pour tous ceux qui souhaitent le faire dans Swift 2.x:
ou Swift 3.x:
la source
Cela semble fonctionner:
la source
-drawRect:
dans une sous-classe proprement dite, pas dans une catégorie, puis utiliser cette sous-classe comme barre de navigation.Après avoir fait ce que tout le monde a dit ci-dessus, à savoir:
... ma barre de navigation était toujours blanche . J'ai donc ajouté cette ligne:
... et voilà! Cela semblait faire l'affaire.
la source
Si vous construisez avec la dernière version bêta d'iOS 13.4 et XCode 11.4, la réponse acceptée ne fonctionnera plus. J'ai trouvé un autre moyen, c'est peut-être juste un bogue dans le logiciel bêta, mais je l'écris là-bas, juste au cas où
(rapide 5)
la source
Je sais que ce sujet est ancien, mais si les gens veulent savoir comment cela se fait sans surcharger la méthode drawRect.
Voici ce dont vous avez besoin:
la source
Le code ci-dessous se développe sur la première réponse choisie pour ce fil, pour se débarrasser de la bordure inférieure et définir la couleur du texte:
Les deux dernières lignes codées de ce code définissent la transparence. J'ai emprunté ce code à ce fil et cela a parfaitement fonctionné!
La propriété "clipsToBounds" était un code que j'ai trouvé qui supprimait la ligne de bordure inférieure avec OU sans jeu de transparence (donc si vous décidez d'aller avec un arrière-plan blanc / noir / etc. solide à la place, il n'y aura toujours pas de ligne de bordure).
La ligne "tintColor" (2ème ligne codée) définit mon bouton de retour sur un gris clair
J'ai conservé barTintColor comme sauvegarde. Je ne sais pas pourquoi la transparence ne fonctionnerait pas, mais si ce n'est pas le cas, je veux mon bg blanc comme je l'avais l'habitude de l'avoir
la source
pour Swift 3.0:
la source
Solution C # / Xamarin
la source
Essayez le morceau de code suivant:
la source
Une autre façon qui a fonctionné pour moi est de sous-classer UINavigationBar et de laisser la méthode drawRect vide !!
la source
Dans Swift 4.2
(dans viewWillAppear), puis dans viewWillDisappear, pour l'annuler, mettez
la source
Voulez-vous dire entièrement transparent ou utiliser le style noir translucide de l'application Photos? Vous pouvez accomplir ce dernier en définissant sa
barStyle
propriété surUIBarStyleBlackTranslucent
. Le premier ... je n'en suis pas sûr. Si vous souhaitez que les éléments dessus soient toujours visibles, vous devrez peut-être fouiller dans la hiérarchie des vues de la barre et supprimer la vue contenant son arrière-plan.la source
Cela fonctionne pour Swift 2.0.
la source
Vérifiez RRViewControllerExtension , qui est dédié à la gestion de l'apparence des barres UINavigation.
avec RRViewControllerExtension dans votre projet, il vous suffit de remplacer
en vous viewcontroller.
la source
la source