Sto cercando di capire come nascondere la barra delle schede nella mia app rapida per iOS. Non mi interessano le animazioni di fantasia o altro. Solo qualcosa che posso inserire nella funzione ViewDidLoad ().
Risposte:
Puoi semplicemente usarlo nel tuo ViewDidLoad()
metodo.
self.tabBarController?.tabBar.hidden = true
Per Swift 3.0, 4.0, 5.0 :
self.tabBarController?.tabBar.isHidden = true
Oppure puoi cambiare la posizione z della barra delle schede in questo modo:
self.tabBarController?.tabBar.layer.zPosition = -1
e se vuoi mostrarlo di nuovo, allora:
self.tabBarController?.tabBar.layer.zPosition = 0
La risposta accettata funziona, ma la transizione ad un'altra vista ha un'animazione discontinua (l'animazione della barra delle schede)
Volevo anche aggiungere anche se la soluzione di Kalpesh ha funzionato perfettamente per me, ho scoperto che ogni controller di visualizzazione ha un attributo per hidesBottomBarWhenPushed (controlla lo storyboard.) Se desideri nascondere la barra delle schede, dovresti mettere un segno di spunta su quello. E funzionerebbe benissimo.
Aggiornamento: non sono sicuro che questa sia una cosa nota, ma ecco cosa dice la pagina della documentazione di Apple:
Penso che questo significhi che devi impostare il valore di base di hidesBottomBarWhenPushed nel controller di visualizzazione più in alto (il primo nello stack di navigazione). Una volta impostato su true, puoi cambiare in false o true per gli altri viewcontrollers sul pila. Tuttavia, se il valore hidesBottomBarWhenPushed del controller di visualizzazione più in alto è false, non verrà visualizzata una barra delle schede per gli altri controller nello stack di navigazione.
Prima del push set controller.hidesBottomBarWhenPushed = true
let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(objCreateEventVC, animated: false)
setViewControllers
Non è necessario impostare la proprietà isHidden di tabBar.
Semplicemente, vai a ViewController (in StoryBoard) -> Ispettore attributi -> Nella sezione "Visualizza controller" seleziona la casella di controllo "Nascondi barra inferiore su push". Funziona come un fascino.
Se vai nel modo 'isHidden' devi fare molte manipolazioni, cioè farlo apparire di nuovo quando torni indietro e anche rimuovere lo spazio vuoto in basso dopo aver nascosto tabBar.
Hide Bottom Bar on Push
ha un'animazione spiacevole, imo.
Swift 3.
self.tabBarController?.tabBar.isHidden = true
Puoi anche impostarlo in estensione (usa la risposta di 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
}
}
Questo è il modo programmatico per Swift 4.0, 4.1, 4.2, 5.0 e versioni successive >:
tabBarController?.hidesBottomBarWhenPushed = true
o
hidesBottomBarWhenPushed = true
Per nascondere la navigationBar e la tabBar utilizzo la funzione successiva:
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
}
}
Quando l'orientamento dello schermo ha cambiato l'altezza della tabBar cambia anche, quindi uso la funzione successiva per uscire dallo schermo intero per ridimensionare l'altezza:
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
}
}
Spero sia utile per te.
vc.hidesBottomBarWhenPushed = true
dovrebbe fare il lavoro. NON mostrare e nascondere manualmente la barra delle schede.