Masquer la barre d'onglets dans l'application IOS Swift
91
J'essaie de comprendre comment masquer la barre d'onglets dans mon application iOS Swift. Je me fiche des animations fantaisistes ou de quoi que ce soit. Juste quelque chose que je peux mettre dans la fonction ViewDidLoad ().
Réglez ceci avant de pousser le VC. vc.hidesBottomBarWhenPushed = truedevrait faire le travail. NE PAS afficher ni masquer manuellement la barre d'onglets.
abhimuralidharan
Réponses:
214
Vous pouvez simplement l'utiliser dans votre ViewDidLoad()méthode.
self.tabBarController?.tabBar.hidden = true
Pour Swift 3.0, 4.0, 5.0 :
self.tabBarController?.tabBar.isHidden = true
Ou vous pouvez changer la position z de la barre d'onglets de cette façon:
Dharmesh, merci pour la réponse. Cela masque avec succès la barre d'onglets, mais la vue tableau ne remplit pas l'écran. C'est juste noir là où la barre d'onglets devrait être. Je suppose qu'il y a une autre étape pour l'adapter à l'écran?
Robert
3
Ajoutez des contraintes pour cela.
Dharmesh Kheni
2
Quelles sont les «contraintes» à ajouter?
db0
Si vous avez utilisé des contraintes, vous pouvez modifier la contrainte de hauteur pour cela ou vous pouvez modifier le cadre de tableView. @ db0
Dharmesh Kheni
5
Mais la barre d'onglets prendrait toujours le contact, essayez de toucher près de n'importe quel onglet de la barre d'onglets invisible. @DharmeshKheni
Shobhit C
140
La réponse acceptée fonctionne, mais la transition vers une autre vue a une animation saccadée (L'animation de la barre d'onglets)
Je voulais également ajouter bien que la solution de Kalpesh fonctionnait parfaitement pour moi, j'ai découvert que chaque contrôleur de vue avait un attribut pour hidesBottomBarWhenPushed (consultez le storyboard.) Si vous souhaitez masquer la barre d'onglets, vous devez cocher cela. Et cela fonctionnerait très bien.
Mise à jour: je ne sais pas si c'est une chose connue, mais voici ce que dit la page de documentation Apple:
Je pense que cela signifie que vous devez définir la valeur de base de hidesBottomBarWhenPushed au contrôleur de vue le plus haut (le premier de la pile de navigation.) Une fois que vous avez défini cela sur true, vous pouvez passer à false ou true pour les autres viewcontrollers sur le empiler. Mais, si la valeur hidesBottomBarWhenPushed de votre contrôleur de vue supérieur est false, il n'affichera pas de barre d'onglets pour les autres contrôleurs de la pile de navigation.
c'est ce que nous devons faire. Beaucoup mieux que d'autres réponses si vous voulez juste le cacher pendant que vous présentez le ViewController
Gabriel Goncalves
pourquoi cela ne fonctionne pas dans Swift 4 ?? Je coche déjà l'option, mais elle apparaît toujours lorsque je vais à ce contrôleur de vue particulier
ken
Cela masque également la barre d'onglets pour tous les contrôleurs de vue qui sont ajoutés à la pile après cela. Existe-t-il un moyen de le ramener pour ces contrôleurs de vue suivants?
Justin Vallely
@JustinVallely S'il vous plaît laissez-moi savoir si la mise à jour fonctionne dans la réponse
Akshansh Thakur
1
Merci, la réponse acceptée a posé un problème pour moi, quand je reviens à la vue d'où je venais, la barre d'onglets pour cela était également disparue!
Abed Naseri
79
Avant le push set controller.hidesBottomBarWhenPushed = true
let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = trueself.navigationController?.pushViewController(objCreateEventVC, animated: false)
Ne fonctionne pas lors de l'ajout d'un groupe de contrôleurs avecsetViewControllers
KR
27
Pas besoin de définir la propriété isHidden de tabBar.
Accédez simplement à ViewController (dans StoryBoard) -> Inspecteur d'attributs -> Dans la section «Afficher le contrôleur», cochez la case «Masquer la barre inférieure sur Push». Cela fonctionne comme un charme.
Si vous optez pour 'isHidden', vous devez faire beaucoup de manipulation, c'est-à-dire pour le faire réapparaître lorsque vous revenez en arrière et aussi pour supprimer l'espace vide du bas après avoir masqué tabBar.
@NicoS. Vrai. Où dans la question / réponse lisez-vous quelque chose sur une barre d'outils?
J. Doe
Depuis la documentation: Une valeur booléenne indiquant si la barre d'outils en bas de l'écran est masquée lorsque le contrôleur de vue est poussé sur un contrôleur de navigation.
Nico S.
1
La question concerne la TabBar et non la ToolBar
Nico S.
@NicoS. c'est pareil dans cette situation ... lol. De toute évidence, vous n'avez même pas pris la peine de l'essayer.
J. Doe
1
le premier ne fonctionne pas, le second doit être ajouté lors de l'exécution d'un segue ou avant d'appuyer sur le contrôleur de vue.
Gal Shahar
1
Pour masquer la navigationBar et la tabBar, j'utilise la fonction suivante:
var tabBarHeight : CGFloat!funcfullScreenAction(){
if navigationController?.isNavigationBarHidden ?? false {
//Show navigationBar
navigationController?.setNavigationBarHidden(false, animated: false)
//Show tabBar
tabBarController?.tabBar.isHidden = false//Update the height of tabBarif (!(tabBarController?.tabBar.frame.size.height.isEqual(to: 0))!) {
tabBarHeight = self.tabBarController?.tabBar.frame.size.height
}
tabBarController?.tabBar.frame.size.height = tabBarHeight
} else {
//Hide navigationBar
navigationController?.setNavigationBarHidden(true, animated: false)
//Hide tabBar
tabBarController?.tabBar.isHidden = true//Update the height of tabBar
tabBarHeight = tabBarController?.tabBar.frame.size.height
tabBarController?.tabBar.frame.size.height = 0
}
}
Lorsque l'orientation de l'écran a changé la hauteur de tabBar change également, j'utilise donc la fonction suivante pour quitter le plein écran pour redimensionner la hauteur:
vc.hidesBottomBarWhenPushed = true
devrait faire le travail. NE PAS afficher ni masquer manuellement la barre d'onglets.Réponses:
Vous pouvez simplement l'utiliser dans votre
ViewDidLoad()
méthode.self.tabBarController?.tabBar.hidden = true
Pour Swift 3.0, 4.0, 5.0 :
self.tabBarController?.tabBar.isHidden = true
Ou vous pouvez changer la position z de la barre d'onglets de cette façon:
self.tabBarController?.tabBar.layer.zPosition = -1
et si vous voulez le montrer à nouveau, alors:
self.tabBarController?.tabBar.layer.zPosition = 0
la source
La réponse acceptée fonctionne, mais la transition vers une autre vue a une animation saccadée (L'animation de la barre d'onglets)
Je voulais également ajouter bien que la solution de Kalpesh fonctionnait parfaitement pour moi, j'ai découvert que chaque contrôleur de vue avait un attribut pour hidesBottomBarWhenPushed (consultez le storyboard.) Si vous souhaitez masquer la barre d'onglets, vous devez cocher cela. Et cela fonctionnerait très bien.
Mise à jour: je ne sais pas si c'est une chose connue, mais voici ce que dit la page de documentation Apple:
Je pense que cela signifie que vous devez définir la valeur de base de hidesBottomBarWhenPushed au contrôleur de vue le plus haut (le premier de la pile de navigation.) Une fois que vous avez défini cela sur true, vous pouvez passer à false ou true pour les autres viewcontrollers sur le empiler. Mais, si la valeur hidesBottomBarWhenPushed de votre contrôleur de vue supérieur est false, il n'affichera pas de barre d'onglets pour les autres contrôleurs de la pile de navigation.
la source
let objCreateEventVC = CreateEventVC() objCreateEventVC.hidesBottomBarWhenPushed = true self.navigationController?.pushViewController(objCreateEventVC, animated: false)
la source
setViewControllers
Pas besoin de définir la propriété isHidden de tabBar.
Accédez simplement à ViewController (dans StoryBoard) -> Inspecteur d'attributs -> Dans la section «Afficher le contrôleur», cochez la case «Masquer la barre inférieure sur Push». Cela fonctionne comme un charme.
Si vous optez pour 'isHidden', vous devez faire beaucoup de manipulation, c'est-à-dire pour le faire réapparaître lorsque vous revenez en arrière et aussi pour supprimer l'espace vide du bas après avoir masqué tabBar.
la source
Hide Bottom Bar on Push
a une animation désagréable, imo.Swift 3.
self.tabBarController?.tabBar.isHidden = true
la source
Vous pouvez également le définir en extension (utilisez la réponse Dharmesh Kheni)
extension UITabBar { func tabsVisiblty(_ isVisiblty: Bool = true){ if isVisiblty { self.isHidden = false self.layer.zPosition = 0 } else { self.isHidden = true self.layer.zPosition = -1 } }
la source
C'est la méthode par programmation pour Swift 4.0, 4.1, 4.2, 5.0 et versions ultérieures >:
tabBarController?.hidesBottomBarWhenPushed = true
ou
hidesBottomBarWhenPushed = true
la source
Pour masquer la navigationBar et la tabBar, j'utilise la fonction suivante:
var tabBarHeight : CGFloat! func fullScreenAction(){ if navigationController?.isNavigationBarHidden ?? false { //Show navigationBar navigationController?.setNavigationBarHidden(false, animated: false) //Show tabBar tabBarController?.tabBar.isHidden = false //Update the height of tabBar if (!(tabBarController?.tabBar.frame.size.height.isEqual(to: 0))!) { tabBarHeight = self.tabBarController?.tabBar.frame.size.height } tabBarController?.tabBar.frame.size.height = tabBarHeight } else { //Hide navigationBar navigationController?.setNavigationBarHidden(true, animated: false) //Hide tabBar tabBarController?.tabBar.isHidden = true //Update the height of tabBar tabBarHeight = tabBarController?.tabBar.frame.size.height tabBarController?.tabBar.frame.size.height = 0 } }
Lorsque l'orientation de l'écran a changé la hauteur de tabBar change également, j'utilise donc la fonction suivante pour quitter le plein écran pour redimensionner la hauteur:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) if navigationController?.isNavigationBarHidden ?? false { navigationController?.setNavigationBarHidden(false, animated: false) tabBarController?.tabBar.isHidden = false } }
J'espère que cela vous sera utile.
la source