Próbuję dowiedzieć się, jak ukryć pasek kart w mojej szybkiej aplikacji na iOS. Nie obchodzą mnie żadne wymyślne animacje ani nic. Po prostu coś, co mogę umieścić w funkcji ViewDidLoad ().
Odpowiedzi:
Możesz po prostu użyć tego w swojej ViewDidLoad()metodzie.
self.tabBarController?.tabBar.hidden = true
Dla Swift 3.0, 4.0, 5.0 :
self.tabBarController?.tabBar.isHidden = true
Lub możesz zmienić pozycję z paska kart w ten sposób:
self.tabBarController?.tabBar.layer.zPosition = -1
a jeśli chcesz to ponownie pokazać, to:
self.tabBarController?.tabBar.layer.zPosition = 0
Zaakceptowana odpowiedź działa, ale przejście do innego widoku ma niestabilną animację (animacja paska zakładek)
Chciałem też dodać, chociaż rozwiązanie Kalpesha działało idealnie dla mnie, dowiedziałem się, że każdy kontroler widoku ma atrybut dla hidesBottomBarWhenPushed (sprawdź scenorys). Jeśli chcesz ukryć pasek zakładek, powinieneś zaznaczyć to. I to by działało świetnie.
Aktualizacja: Nie jestem pewien, czy jest to znana rzecz, ale oto, co mówi strona dokumentacji Apple:
Myślę, że oznacza to, że musisz ustawić podstawową wartość hidesBottomBarWhenPushed na najwyższym kontrolerze widoku (pierwszym na stosie nawigacyjnym). Po ustawieniu tego na true możesz zmienić na false lub true dla innych kontrolerów widoku w stos. Jeśli jednak najwyższy kontroler widoku hidesBottomBarWhenPushed ma wartość false, nie wyświetli paska kart dla innych kontrolerów na stosie nawigacji.
Przed naciśnięciem ustaw kontroler.hidesBottomBarWhenPushed = true
let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(objCreateEventVC, animated: false)
setViewControllers
Nie ma potrzeby ustawiania właściwości isHidden tabBar.
Po prostu przejdź do ViewController (w StoryBoard) -> Inspektor atrybutów -> W sekcji „Wyświetl kontroler” zaznacz pole wyboru „Ukryj dolny pasek po naciśnięciu”. To działa jak urok.
Jeśli wybierzesz sposób „isHidden”, musisz wykonać wiele czynności, tj. Sprawić, by pojawił się ponownie po powrocie, a także usunąć dolne puste miejsce po ukryciu tabBar.
Hide Bottom Bar on Pushma nieprzyjemną animację, imo.
Szybki 3.
self.tabBarController?.tabBar.isHidden = true
Możesz także ustawić rozszerzenie (użyj odpowiedzi 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
}
}
Oto sposób programistyczny dla Swift 4.0, 4.1, 4.2, 5.0 i nowszych >:
tabBarController?.hidesBottomBarWhenPushed = true
lub
hidesBottomBarWhenPushed = true
Aby ukryć navigationBar i tabBar, używam następnej funkcji:
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
}
}
Kiedy orientacja ekranu zmieniła się, wysokość tabBar również się zmienia, więc używam następnej funkcji, aby wyjść z trybu pełnoekranowego, aby zmienić wysokość:
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
}
}
Mam nadzieję, że ci się przyda.
vc.hidesBottomBarWhenPushed = truepowinien wykonać pracę. NIE WOLNO ręcznie pokazywać i ukrywać paska kart.