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 ().
Dharmesh, dzięki za odpowiedź. To pomyślnie ukrywa pasek kart, ale wtedy widok tabeli nie wypełnia ekranu. Tam, gdzie powinien znajdować się pasek kart, jest po prostu czarny. Myślę, że jest jeszcze jeden krok, aby dopasować go do ekranu?
Robert
3
Dodaj do tego ograniczenia.
Dharmesh Kheni
2
Jakie „ograniczenia” należy dodać?
db0
Jeśli użyłeś ograniczeń, możesz zmienić ograniczenie wysokości lub zmienić ramkę tableView. @ db0
Dharmesh Kheni
5
Ale pasek kart nadal byłby w dotyku, spróbuj stuknąć w pobliżu dowolnej karty niewidocznego paska kart. @DharmeshKheni
Shobhit C
140
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.
to właśnie powinniśmy zrobić. O wiele lepiej niż inne odpowiedzi, jeśli chcesz to ukryć, prezentując ViewController
Gabriel Goncalves
dlaczego to nie działa w Swift 4? Zaznaczam już opcję, ale nadal pojawia się, kiedy przechodzę do tego konkretnego kontrolera widoku
ken
Spowoduje to również ukrycie paska kart dla wszystkich kontrolerów widoku, które zostaną dodane do stosu po tym. Czy istnieje sposób na przywrócenie go dla tych kolejnych kontrolerów widoku?
Justin Vallely,
@JustinVallely Daj mi znać, jeśli aktualizacja działa w odpowiedzi
Akshansh Thakur
1
Dzięki, zaakceptowana odpowiedź miała dla mnie problem, kiedy wróciłem do widoku, z którego wracałem, Tabbar również zniknął!
Abed Naseri
79
Przed naciśnięciem ustaw kontroler.hidesBottomBarWhenPushed = true
let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = trueself.navigationController?.pushViewController(objCreateEventVC, animated: false)
Nie działa podczas dodawania kilku kontrolerów zsetViewControllers
KR
27
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.
@NicoS. Prawdziwe. Gdzie w pytaniu / odpowiedzi czytasz cokolwiek o pasku narzędzi?
J. Doe
Z dokumentacji: Wartość logiczna wskazująca, czy pasek narzędzi u dołu ekranu jest ukryty, gdy kontroler widoku zostanie umieszczony na kontrolerze nawigacji.
Nico S.,
1
Pytanie dotyczy TabBar, a nie ToolBar
Nico S.
@NicoS. tak samo jest w tej sytuacji ... lol. Najwyraźniej nawet nie zadałeś sobie trudu, aby go wypróbować.
J. Doe
1
pierwsza nie działa, drugą należy dodać przy wykonywaniu płynności lub przed naciśnięciem kontrolera widoku.
Gal Shahar
1
Aby ukryć navigationBar i tabBar, używam następnej funkcji:
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
}
}
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ść:
vc.hidesBottomBarWhenPushed = true
powinien wykonać pracę. NIE WOLNO ręcznie pokazywać i ukrywać paska kart.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
źródło
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.
źródło
let objCreateEventVC = CreateEventVC() objCreateEventVC.hidesBottomBarWhenPushed = true self.navigationController?.pushViewController(objCreateEventVC, animated: false)
źródło
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.
źródło
Hide Bottom Bar on Push
ma nieprzyjemną animację, imo.Szybki 3.
self.tabBarController?.tabBar.isHidden = true
źródło
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 } }
źródło
Oto sposób programistyczny dla Swift 4.0, 4.1, 4.2, 5.0 i nowszych >:
tabBarController?.hidesBottomBarWhenPushed = true
lub
hidesBottomBarWhenPushed = true
źródło
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.
źródło