Я пытаюсь понять, как скрыть панель вкладок в моем приложении iOS Swift. Меня не интересуют какие-то модные анимации или что-то в этом роде. Просто кое-что я могу добавить в функцию ViewDidLoad ().
Дхармеш, спасибо за ответ. Это успешно скрывает панель вкладок, но тогда табличное представление не заполняет экран. Он просто черный там, где должна быть панель вкладок. Думаю, есть еще шаг, чтобы подогнать его под экран?
Роберт
3
Добавьте для этого ограничения.
Дхармеш Хени
2
Какие «ограничения» добавить?
db0
Если вы использовали ограничения, вы можете изменить ограничение высоты для этого или вы можете изменить фрейм tableView. @ db0
Дхармеш Хени
5
Но панель вкладок все равно будет касаться, попробуйте нажать рядом с любой вкладкой невидимой панели вкладок. @DharmeshKheni
Shobhit C
140
Принятый ответ работает, но переход к другому виду имеет прерывистую анимацию (анимация панели вкладок)
Также хотел добавить, хотя решение Kalpesh отлично сработало для меня, я обнаружил, что каждый контроллер представления имеет атрибут для hidesBottomBarWhenPushing (проверьте раскадровку). Если вы хотите скрыть панель вкладок, вы должны поставить галочку на этом. И это отлично сработало бы.
Обновление: я не уверен, что это известная вещь, но вот что говорится на странице документации Apple:
Я думаю, это означает, что вам нужно установить базовое значение hidesBottomBarWhenPushing на самом верхнем контроллере представления (первый в стеке навигации). После того, как вы установили его на true, вы можете изменить его на false или true для других контроллеров представления на стек. Но если значение hidesBottomBarWhenPushing вашего самого верхнего контроллера представления равно false, оно не будет отображать панель вкладок для других контроллеров в стеке навигации.
вот что мы должны делать. Намного лучше, чем другие ответы, если вы просто хотите скрыть его, пока вы представляете ViewController
Габриэль Гонсалвес
почему это не работает в Swift 4 ?? Я уже отмечаю эту опцию, но она все равно появляется, когда я перехожу к этому конкретному контроллеру представления
Кен
Это также скрывает панель вкладок для любых контроллеров представления, которые будут добавлены в стек после этого. Есть ли способ вернуть его для этих последующих контроллеров представления?
Джастин Валлели
@JustinVallely Пожалуйста, дайте мне знать, работает ли обновление в ответе
Акшанш Такур
1
Спасибо, у принятого ответа возникла проблема для меня, когда я возвращаюсь к представлению, из которого исходил, панель вкладок для этого также исчезла!
Абед Насери
79
Перед нажатием установите controller.hidesBottomBarWhenPushing = true
let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = trueself.navigationController?.pushViewController(objCreateEventVC, animated: false)
Не работает при добавлении кучи контроллеров сsetViewControllers
KR
27
Нет необходимости устанавливать свойство isHidden tabBar.
Просто перейдите в ViewController (в StoryBoard) -> Инспектор атрибутов -> В разделе «Контроллер просмотра» установите флажок «Скрыть нижнюю панель при нажатии». Это работает как шарм.
Если вы выберете метод isHidden, вам нужно будет проделать большую работу, то есть сделать так, чтобы он снова появлялся при возврате, а также удалить нижнее пустое пространство после скрытия tabBar.
@NicoS. Правда. Где в вопросе / ответе вы читаете что-нибудь о панели инструментов?
J. Doe
Из документации: Логическое значение, указывающее, скрыта ли панель инструментов в нижней части экрана, когда контроллер представления передается на контроллер навигации.
Нико С.
1
Вопрос касается TabBar, а не ToolBar
Нико С.
@NicoS. то же самое и в этой ситуации ... лол. Очевидно, вы даже не удосужились попробовать это.
J. Doe
1
первый не работает, второй следует добавить при выполнении перехода или перед нажатием на контроллер представления.
Гал Шахар
1
Чтобы скрыть navigationBar и tabBar, я использую следующую функцию:
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
}
}
Когда ориентация экрана изменилась, высота tabBar тоже изменится, поэтому я использую следующую функцию для выхода из полноэкранного режима, чтобы изменить размер высоты:
vc.hidesBottomBarWhenPushed = true
должен делать работу. НЕ показывайте и не скрывайте панель вкладок вручную.Ответы:
Вы можете просто использовать это в своем
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, оно не будет отображать панель вкладок для других контроллеров в стеке навигации.
источник
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
источник
Вы также можете установить его в расширении (используйте ответ 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 } }
источник
Это программный способ для 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 } }
Надеюсь, это будет вам полезно.
источник