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é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 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.
Avant le push set controller.hidesBottomBarWhenPushed = true
let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(objCreateEventVC, animated: false)
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.
Hide Bottom Bar on Push
a une animation désagréable, imo.
Swift 3.
self.tabBarController?.tabBar.isHidden = true
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
}
}
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
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.
vc.hidesBottomBarWhenPushed = true
devrait faire le travail. NE PAS afficher ni masquer manuellement la barre d'onglets.