Ocultar barra de pestañas en la aplicación IOS Swift
91
Estoy tratando de descubrir cómo ocultar la barra de pestañas en mi aplicación rápida de iOS. No me importan las animaciones extravagantes ni nada. Solo algo que puedo poner en la función ViewDidLoad ().
Configure esto antes de presionar el VC. vc.hidesBottomBarWhenPushed = truedebería hacer el trabajo. NO muestre ni oculte manualmente la barra de pestañas.
abhimuralidharan
Respuestas:
213
Simplemente puede usar esto en su ViewDidLoad()método.
self.tabBarController?.tabBar.hidden = true
Para Swift 3.0, 4.0, 5.0 :
self.tabBarController?.tabBar.isHidden = true
O puede cambiar la posición z de la barra de pestañas de esta manera:
Dharmesh, gracias por la respuesta. Esto oculta correctamente la barra de pestañas, pero la vista de tabla no llena la pantalla. Es simplemente negro donde debería estar la barra de pestañas. ¿Supongo que hay otro paso para que se ajuste a la pantalla?
Robert
3
Agregue restricciones para eso.
Dharmesh Kheni
2
¿Cuáles son las "restricciones" para agregar?
db0
Si usó restricciones, puede cambiar la restricción de altura para eso o puede cambiar el marco de tableView. @ db0
Dharmesh Kheni
5
Pero la barra de pestañas aún tomaría el toque, intente tocar cerca de cualquier pestaña de la barra de pestañas invisible. @DharmeshKheni
Shobhit C
140
La respuesta aceptada funciona, pero la transición a otra vista tiene una animación entrecortada (la animación de la barra de pestañas)
También quería agregar, aunque la solución de Kalpesh funcionó perfectamente para mí, descubrí que cada controlador de vista tiene un atributo para hidesBottomBarWhenPushed (vea el guión gráfico). Si desea ocultar la barra de pestañas, debe marcar eso. Y funcionaría muy bien.
Actualización: no estoy seguro de si esto es algo conocido, pero esto es lo que dice la página de documentación de Apple:
Creo que esto significa que debe establecer el valor básico de hidesBottomBarWhenPushed en el controlador de vista superior (el primero en la pila de navegación). Una vez que lo haya establecido en verdadero, puede cambiar a falso o verdadero para los otros controladores de vista en el apilar. Pero, si el valor hidesBottomBarWhenPushed de su controlador de vista superior es falso, no mostrará una barra de pestañas para otros controladores en la pila de navegación.
eso es lo que debemos hacer. Mucho mejor que otras respuestas si solo desea ocultarlo mientras presenta el ViewController
Gabriel Goncalves
¿Por qué esto no funciona en Swift 4? Ya marqué la opción, pero todavía aparece cuando voy a ese controlador de vista en particular
ken
Esto también oculta la barra de pestañas para cualquier controlador de vista que se agregue a la pila después de esto. ¿Hay alguna forma de recuperarlo para los controladores de vista posteriores?
Justin Vallely
@JustinVallely Por favor, avíseme si la actualización funciona en la respuesta
Akshansh Thakur
1
Gracias, la respuesta aceptada tuvo un problema para mí, cuando volví a la vista de la que venía, la barra de pestañas para eso también desapareció
Abed Naseri
79
Antes de presionar, configure controller.hidesBottomBarWhenPushed = true
let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = trueself.navigationController?.pushViewController(objCreateEventVC, animated: false)
No funciona cuando se agregan varios controladores consetViewControllers
KR
27
No es necesario establecer la propiedad isHidden de tabBar.
Simplemente, vaya a ViewController (en StoryBoard) -> Inspector de atributos -> En la sección 'Ver controlador' seleccione la casilla de verificación 'Ocultar barra inferior al presionar'. Esto funciona a las mil maravillas.
Si sigue el camino de 'isHidden', necesita hacer mucho manejo, es decir, hacer que vuelva a aparecer cuando regrese y también eliminar el espacio vacío inferior después de ocultar tabBar.
@NicoS. Cierto. ¿En qué parte de la pregunta / respuesta lee algo sobre una barra de herramientas?
J. Doe
De la documentación: Un valor booleano que indica si la barra de herramientas en la parte inferior de la pantalla está oculta cuando se presiona el controlador de vista en un controlador de navegación.
Nico S.
1
La pregunta es sobre TabBar, no sobre ToolBar
Nico S.
@NicoS. es lo mismo en esta situación ... jejeje. Claramente ni siquiera te molestaste en probarlo.
J. Doe
1
el primero no funciona, el segundo debe agregarse al realizar una transición o antes de presionar el controlador de vista.
Gal Shahar
1
Para ocultar la barra de navegación y la barra de pestañas, uso la siguiente función:
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
}
}
Cuando la orientación de la pantalla ha cambiado, la altura de la barra de pestañas también cambia, entonces uso la siguiente función para salir de la pantalla completa y cambiar el tamaño de la altura:
vc.hidesBottomBarWhenPushed = true
debería hacer el trabajo. NO muestre ni oculte manualmente la barra de pestañas.Respuestas:
Simplemente puede usar esto en su
ViewDidLoad()
método.self.tabBarController?.tabBar.hidden = true
Para Swift 3.0, 4.0, 5.0 :
self.tabBarController?.tabBar.isHidden = true
O puede cambiar la posición z de la barra de pestañas de esta manera:
self.tabBarController?.tabBar.layer.zPosition = -1
y si quieres volver a mostrarlo entonces:
self.tabBarController?.tabBar.layer.zPosition = 0
fuente
La respuesta aceptada funciona, pero la transición a otra vista tiene una animación entrecortada (la animación de la barra de pestañas)
También quería agregar, aunque la solución de Kalpesh funcionó perfectamente para mí, descubrí que cada controlador de vista tiene un atributo para hidesBottomBarWhenPushed (vea el guión gráfico). Si desea ocultar la barra de pestañas, debe marcar eso. Y funcionaría muy bien.
Actualización: no estoy seguro de si esto es algo conocido, pero esto es lo que dice la página de documentación de Apple:
Creo que esto significa que debe establecer el valor básico de hidesBottomBarWhenPushed en el controlador de vista superior (el primero en la pila de navegación). Una vez que lo haya establecido en verdadero, puede cambiar a falso o verdadero para los otros controladores de vista en el apilar. Pero, si el valor hidesBottomBarWhenPushed de su controlador de vista superior es falso, no mostrará una barra de pestañas para otros controladores en la pila de navegación.
fuente
let objCreateEventVC = CreateEventVC() objCreateEventVC.hidesBottomBarWhenPushed = true self.navigationController?.pushViewController(objCreateEventVC, animated: false)
fuente
setViewControllers
No es necesario establecer la propiedad isHidden de tabBar.
Simplemente, vaya a ViewController (en StoryBoard) -> Inspector de atributos -> En la sección 'Ver controlador' seleccione la casilla de verificación 'Ocultar barra inferior al presionar'. Esto funciona a las mil maravillas.
Si sigue el camino de 'isHidden', necesita hacer mucho manejo, es decir, hacer que vuelva a aparecer cuando regrese y también eliminar el espacio vacío inferior después de ocultar tabBar.
fuente
Hide Bottom Bar on Push
tiene una animación desagradable, en mi opinión.Rápido 3.
self.tabBarController?.tabBar.isHidden = true
fuente
También puede configurarlo en extensión (use la respuesta 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 } }
fuente
Esta es la forma programática para Swift 4.0, 4.1, 4.2, 5.0 y posteriores >:
tabBarController?.hidesBottomBarWhenPushed = true
o
hidesBottomBarWhenPushed = true
fuente
Para ocultar la barra de navegación y la barra de pestañas, uso la siguiente función:
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 } }
Cuando la orientación de la pantalla ha cambiado, la altura de la barra de pestañas también cambia, entonces uso la siguiente función para salir de la pantalla completa y cambiar el tamaño de la altura:
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 } }
Espero que te sea de utilidad.
fuente