Я пытаюсь понять, как скрыть панель вкладок в моем быстром приложении iOS. Меня не волнует какая-то причудливая анимация или что-то еще. Просто я могу добавить функцию ViewDidLoad().
Скрыть панель вкладок в быстром приложении IOS
Ответ 1
Вы можете просто использовать это в своем 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
Ответ 2
Принятый ответ работает, но переход в другое представление имеет прерывистую анимацию (вкладка "Анимация панели")
Также хотел добавить, хотя решение Kalpesh отлично сработало для меня, я обнаружил, что у каждого контроллера представления есть атрибут для hidesBottomBarWhenPhed (посмотрите раскадровку). Если вы хотите скрыть панель вкладок, вы должны поставить галочку на этом. И это будет прекрасно работать.
Обновление: я не уверен, что это известная вещь, но вот что говорит страница документации Apple:
Контроллер представления, добавленный как дочерний элемент контроллера навигации, может отображать дополнительную панель инструментов в нижней части экрана. Значение этого свойства в самом верхнем контроллере представления определяет, видна ли панель инструментов. Если значение этого свойства равно true, панель инструментов скрыта. Если значение этого свойства равно false, полоса видна.
Я думаю, это означает, что вы должны установить базовое значение hidesBottomBarWhenPush на самом верхнем контроллере представления (первом в стеке навигации). Как только вы установите это значение в true, вы можете изменить значение false или true для других контроллеров представления в стек. Но, если ваш самый верхний контроллер вида hidesBottomBarWhenPhed имеет значение false, он не будет отображать панель вкладок для других контроллеров в стеке навигации.
Ответ 3
Перед нажатием кнопки set.hidesBottomBarWhenPushed = true
let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(objCreateEventVC, animated: false)
Ответ 4
Нет необходимости устанавливать свойство tabBar isHidden.
Просто перейдите в ViewController (в StoryBoard) → Инспектор атрибутов → В разделе "View Controller" установите флажок "Скрыть нижнюю панель при нажатии". Это работает как шарм.
Если вы идете по пути "isHidden", вам нужно много обработать, то есть, чтобы он снова появился, когда вы вернетесь, а также удалить нижнее пустое пространство после скрытия tabBar.
Ответ 5
Swift 3.
self.tabBarController?.tabBar.isHidden = true
Ответ 6
Вы также можете установить его в расширении (используйте ответ 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
}
}
Ответ 7
Это программный способ для Swift 4.0, 4.1, 4.2, 5.0 и более поздних версий>:
tabBarController?.hidesBottomBarWhenPushed = true
или же
hidesBottomBarWhenPushed = true
Ответ 8
Чтобы скрыть панель навигации и панель вкладок, я использую следующую функцию:
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
}
}
Я надеюсь, что это полезно для вас.