Я пытаюсь понять, как скрыть панель вкладок в моем приложении iOS Swift. Меня не интересуют какие-то модные анимации или что-то в этом роде. Просто кое-что я могу добавить в функцию ViewDidLoad ().
Ответы:
Вы можете просто использовать это в своем ViewDidLoad()методе.
self.tabBarController?.tabBar.hidden = true
Для Swift 3.0, 4.0, 5.0 :
self.tabBarController?.tabBar.isHidden = true
Или вы можете изменить положение панели вкладок по оси Z следующим образом:
self.tabBarController?.tabBar.layer.zPosition = -1
и если вы хотите показать это снова, то:
self.tabBarController?.tabBar.layer.zPosition = 0
Принятый ответ работает, но переход к другому виду имеет прерывистую анимацию (анимация панели вкладок)
Также хотел добавить, хотя решение Kalpesh отлично сработало для меня, я обнаружил, что каждый контроллер представления имеет атрибут для hidesBottomBarWhenPushing (проверьте раскадровку). Если вы хотите скрыть панель вкладок, вы должны поставить галочку на этом. И это отлично сработало бы.
Обновление: я не уверен, что это известная вещь, но вот что говорится на странице документации Apple:
Я думаю, это означает, что вам нужно установить базовое значение hidesBottomBarWhenPushing на самом верхнем контроллере представления (первый в стеке навигации). После того, как вы установили его на true, вы можете изменить его на false или true для других контроллеров представления на стек. Но если значение hidesBottomBarWhenPushing вашего самого верхнего контроллера представления равно false, оно не будет отображать панель вкладок для других контроллеров в стеке навигации.
Перед нажатием установите controller.hidesBottomBarWhenPushing = true
let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(objCreateEventVC, animated: false)
setViewControllers
Нет необходимости устанавливать свойство isHidden tabBar.
Просто перейдите в ViewController (в StoryBoard) -> Инспектор атрибутов -> В разделе «Контроллер просмотра» установите флажок «Скрыть нижнюю панель при нажатии». Это работает как шарм.
Если вы выберете метод isHidden, вам нужно будет проделать большую работу, то есть сделать так, чтобы он снова появлялся при возврате, а также удалить нижнее пустое пространство после скрытия tabBar.
Hide Bottom Bar on Pushимеет неприятную анимацию, имо.
Свифт 3.
self.tabBarController?.tabBar.isHidden = true
Это программный способ для Swift 4.0, 4.1, 4.2, 5.0 и более поздних версий>:
tabBarController?.hidesBottomBarWhenPushed = true
или
hidesBottomBarWhenPushed = true
Чтобы скрыть navigationBar и tabBar, я использую следующую функцию:
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
}
}
Когда ориентация экрана изменилась, высота tabBar тоже изменится, поэтому я использую следующую функцию для выхода из полноэкранного режима, чтобы изменить размер высоты:
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
}
}
Надеюсь, это будет вам полезно.
vc.hidesBottomBarWhenPushed = trueдолжен делать работу. НЕ показывайте и не скрывайте панель вкладок вручную.