J'ai essayé de supprimer la bordure navigationBars sans chance. J'ai fait des recherches et les gens semblent dire de définir shadowImage et BackgroundImage sur nil, mais cela ne fonctionne pas dans mon cas.
Mon code
self.navigationController?.navigationBar.barTintColor = UIColor(rgba: "#4a5866")
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: ""), forBarMetrics: UIBarMetrics.Default)
self.navigationController?.navigationBar.shadowImage = UIImage(named: "")
illustration:
la source
Swift 4 et Swift 5
Suppression de la bordure:
Restauration de la bordure:
la source
cela supprimera complètement l'image d'ombre
la source
Avec Swift 2, vous pouvez le faire de cette façon:
Fichier AppDelegate
Dans l'application func (..., didFinishLaunchingWithOptions launchOptions: ...)
pour Swift 3:
la source
Écrivez simplement ceci dans l'extension de UINavigationBar
Et dans votre vueController ...
Et pour annuler cette opération pour n'importe quel viewController, transmettez simplement false.
la source
Réglez
barStyle
sur.Black
avant de régler la teinte:la source
Swift 5
Lorsque vous utilisez setBackgroundImage / shadowImage pour masquer la racine des cheveux, il y a un léger retard. Cette méthode supprime le délai. Crédit à Chameleon Framework . C'est la méthode qu'ils utilisent (dans ObjC)
la source
La réponse de Luca Davanzo est excellente, mais elle ne fonctionne pas sous iOS 10. Je l'ai modifiée pour qu'elle fonctionne sous iOS 10 et inférieur.
Vous pouvez également étendre UINavigationController et appeler cela hors de cela.
removeFromSuperview()
sur la ligne ne fonctionnera pas sur iOS 10, je viens donc de définir l'alpha sur 0 pour que cet appel soit compatible partout.la source
height >= 1.0
. Sur les modèles d'iPhone dotés d'un écran rétine 3x (par exemple 8 Plus, XR ...), la racine des cheveux a une hauteur de 0,33.Pour supprimer la bordure de UINavigationBar dans Swift 3+, utilisez:
la source
pour swift 3
dans la
viewDidLoad
méthodela source
Seulement cela a fonctionné pour moi,
Réf
la source
Mise à jour pour Swift 4 au cas où quelqu'un se demanderait
C'est encore moins bavard maintenant.
la source
Voici comment procéder si vous souhaitez le faire sans changer la couleur d'arrière-plan:
REMARQUE: cela peut se bloquer sur une application de production. Apparemment, la NavigationBar n'aime pas que sa vue disparaisse
la source
La réponse acceptée a fonctionné pour moi, mais j'ai remarqué que lorsque je voulais que l'image d'ombre réapparaisse lors du retour ou de la poussée vers un autre vc, il y avait un clignotement notable dans la barre de navigation.
En utilisant cette méthode
navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
dans viewWillAppear, la barre d'ombre est masquée dans le contrôleur de vue visible actuel.Utiliser ces 2 méthodes
dans viewWillDisappear, le clignotement se produit toujours, mais uniquement lorsque l'image d'ombre réapparaît et non la barre de navigation elle-même.
la source
pour le swift3, vous devez écrire de manière légèrement différente:
la source
Ceci est une version simplifiée de la réponse de Gaurav Chandarana .
la source
Délégué d'application
la source
Si vous souhaitez supprimer uniquement la ligne du bas et conserver la couleur unie de navigationBar, ajoutez ces lignes de code dans viewDidLoad: Swift 3, 4:
Paix!
la source
La ligne de bordure est une UIImageView et la suppression d'une sous-vue qui est une imageView supprimera barButtonItems avec UIImageView. Le code ci-dessous vous aidera à le supprimer. J'espère que cela aide quelqu'un qui a fait face à un problème comme moi.
La bordure UIImageView ne mesure que 0,5 de hauteur, ce code ne supprime donc que cela.
la source
Dans AppDelegate , cela a globalement changé le format de la NavBar et supprime la ligne / bordure du bas:
Je n'ai pas réussi à mettre en œuvre quoi que ce soit de différent sur un VC spécifique, mais cela aidera 90% des personnes
la source
c'est la réponse dans la base rapide 3 de la réponse de Nate Cook
la source
iOS 11 et Swift 4 Vous devriez essayer de suivre si vous souhaitez supprimer la bordure mais ne pas rendre la barre de navigation translucide
self.navigationBar.shadowImage = UIImage()
la source
dans votre navigation personnaliséeController ajoutez ces lignes:
Note importante
la dernière ligne est importante si vous utilisez la méthode viewDidLoad () de première ligne car navigationController doit redessiner la barre de navigation, mais vous pouvez facilement l'utiliser sans layoutIfNeeded () dans la méthode viewWillAppear () avant de dessiner la barre de navigation
la source
Méthode plus rapide de Jack Chen:
En utilisant:
la source
la source