J'ai une application qui a parfois besoin de sa barre de navigation pour se fondre dans le contenu.
Est-ce que quelqu'un sait comment se débarrasser ou changer la couleur de ce petit bar ennuyeux?
Sur l'image ci-dessous, la situation que j'ai - je parle de cette ligne de hauteur 1px sous "Root View Controller"
ios
objective-c
swift
ipad
uinavigationbar
Szymon Kuczur
la source
la source
Réponses:
Pour iOS 13:
Utilisez la
.shadowColor
propriétéPar exemple:
Pour iOS 12 et versions antérieures:
Pour ce faire, vous devez définir une image d'ombre personnalisée. Mais pour que l'image d'ombre soit affichée, vous devez également définir une image d'arrière-plan personnalisée, citant la documentation d'Apple:
Donc:
Ci-dessus est le seul moyen "officiel" de le cacher. Malheureusement, il supprime la translucidité de la barre.
Je ne veux pas d'image d'arrière-plan, juste de la couleur
Vous avez ces options:
Couleur unie, pas de translucidité:
Créez une petite image d'arrière-plan remplie de couleurs et utilisez-la.
Utilisez la méthode «hacky» décrite ci-dessous. Il gardera également la barre translucide.
Comment garder la barre translucide?
Pour conserver la translucidité, vous avez besoin d'une autre approche, cela ressemble à un hack mais fonctionne bien. L'ombre que nous essayons de supprimer est une racine des cheveux
UIImageView
quelque part en dessousUINavigationBar
. Nous pouvons le trouver et le masquer / afficher en cas de besoin.Les instructions ci-dessous supposent que vous devez masquer les cheveux dans un seul contrôleur de votre
UINavigationController
hiérarchie.Déclarez la variable d'instance:
Ajouter une méthode qui trouve cette ombre (délié)
UIImageView:
Ajouter / modifier des
viewWillAppear/viewWillDisappear
méthodes:La même méthode devrait également fonctionner pour les
UISearchBar
cheveux et (presque) tout ce que vous devez cacher :)Un grand merci à @Leo Natan pour l'idée originale!
la source
UINavigationBar
propriété:clipsToBounds = YES
clipsToBounds = YES
fonctionne comme un charme! Merci!viewWillAppear
est appelé, nous ne pouvons pas obtenirshadowImageView
Ci-dessous peut aider simplement!
Rapide:
Objectif c:
la source
Si vous voulez simplement utiliser une couleur de barre de navigation solide et que vous l'avez configurée dans votre storyboard, utilisez ce code dans votre
AppDelegate
classe pour supprimer la bordure de 1 pixel via le proxy d'apparence:la source
Essaye ça:
L'image ci-dessous a l'explication (barre de navigation iOS7):
Et vérifiez cette question SO: iOS7 - Changer la couleur de la bordure UINavigationBar
la source
Je voulais ajouter la version Swift de la réponse de Serhii. J'ai créé un
UIBarExtension.swift
avec ce qui suit:la source
La façon rapide de le faire:
la source
Solution simple et rapide
la source
Après avoir étudié la réponse de Serhil, j'ai créé un pod UINavigationBar + Addition qui peut facilement cacher la racine des cheveux.
la source
Dans Swift 3.0
Modifiez votre
AppDelegate.swift
en ajoutant le code suivant à votre fonction d'application:la source
Depuis iOS 13, il existe une API système pour définir ou supprimer l'ombre
https://developer.apple.com/documentation/uikit/uibarappearance/3198009-shadowimage
la source
UINavigationBarAppearance
têtes !! Je ne le trouverais jamais. Merci, cela a résolu mes problèmes à 100%Peut également être caché de Storyboard (fonctionne sur Xcode 10.1)
En ajoutant un attribut d'exécution: hidesShadow - Boolean - True
la source
La solution de pxpgraphics mise à jour pour Swift 2.0
la source
UINavigationController().navigationBar/toolbar.hide/showBottomHairline()
alors non? J'essaie, mais en vain. Suis-je pas bien compris?Swift 4 // pour masquer la ligne d'ombre de la barre de navigation
la source
J'utilise une extension UINavigationBar qui me permet de masquer / afficher cette ombre à l'aide de l'API UIAppearance ou de sélectionner la barre de navigation qui doit masquer / afficher cette ombre à l'aide de Storyboard (ou code source). Voici l'extension:
Maintenant, pour désactiver l'ombre sur toutes les barres de navigation, vous devez utiliser:
Ou vous pouvez activer / désactiver ce comportement à l'aide de storyboards:
la source
flatAssociatedObjectKey
comme un int unique (traité comme un pointeur) pour identifier votre objet associé. Ici est défini par l'adresse mémoire d'un var privé. J'ai mis à jour la réponse pour ajouter cette var. Voir nshipster.com/associated-objects pour plus d'informations.translucent
sur falseSwift 4 testé une SOLUTION D'UNE LIGNE
Dans
Viewdidload()
Définir la valeur userdefault du contrôleur de navigation true pour la clé "hidesShadow"la source
Swift a mis cela
dans
la source
Une autre option si vous souhaitez conserver la translucidité et que vous ne voulez pas sous-classer tous
UINavigationController
dans votre application:la source
la source
Solution dans Swift 4.2:
Il suffit de mettre cette fonction sur le premier Viewcontroller et de l'appeler
viewdidload
la source
En iOS8, si vous définissez
UINavigationBar.barStyle
à.Black
vous pouvez définir l'arrière-plan de la barre en couleur unie sans bordure.Dans Swift:
la source
Solution en deux lignes qui fonctionne pour moi. Essayez d'ajouter ceci dans la méthode ViewDidLoad:
la source
Voici une solution très simple:
la source
Solution simple - Swift 5
Créez une extension:
Ajoutez ceci à
viewDidLoad()
:la source
Pour les utilisateurs d'iOS 9, cela a fonctionné pour moi. ajoutez simplement ceci:
la source
Le problème avec la définition d'une image d'arrière-plan est qu'il supprime le flou. Vous pouvez le supprimer sans définir d'image d'arrière-plan. Voir ma réponse ici .
la source
Vous devez ajouter une vue au bas de l'UISearchBar
la source
Je sais que c'est un vieux fil, mais j'ai trouvé une solution qui fonctionne vraiment bien:
Sous-classe UINavigationBar. Dans votre sous-classe UINavigationBar, remplacez didAddSubview par le code suivant:
la source
Je viens de créer une extension pour cela ... Désolé pour le formatage (c'est ma première réponse).
Usage:
Extension:
la source
Dans AppDelegate , cela a globalement changé le format de la NavBar:
N'ont pas réussi à implémenter quelque chose de différent sur un VC spécifique, mais cela aidera 90% des personnes
la source
la source