Estou tentando descobrir como ocultar a barra de guias no meu aplicativo iOS swift. Não me importo com animações extravagantes nem nada. Apenas algo que posso colocar na função ViewDidLoad ().
Respostas:
Você pode simplesmente usar isso em seu ViewDidLoad()método.
self.tabBarController?.tabBar.hidden = true
Para Swift 3.0, 4.0, 5.0 :
self.tabBarController?.tabBar.isHidden = true
Ou você pode alterar a posição z da barra de guias desta forma:
self.tabBarController?.tabBar.layer.zPosition = -1
e se você quiser mostrá-lo novamente:
self.tabBarController?.tabBar.layer.zPosition = 0
A resposta aceita funciona, mas a transição para outra visualização tem uma animação instável (a guia Barra de animação)
Também queria adicionar, embora a solução de Kalpesh funcionasse perfeitamente para mim, descobri que todo controlador de visualização tem um atributo para hidesBottomBarWhenPushed (confira o storyboard.) Se você deseja ocultar a barra de guias, deve marcar isso. E funcionaria muito bem.
Atualização: não tenho certeza se isso é uma coisa conhecida, mas aqui está o que a página de documentação da apple diz:
Acho que isso significa que você deve definir o valor básico de hidesBottomBarWhenPushed no controlador de exibição superior (o primeiro na pilha de navegação). Depois de definir isso como verdadeiro, você pode alterar para falso ou verdadeiro para os outros controladores de exibição no pilha. Mas, se o valor hidesBottomBarWhenPushed de seu controlador de visualização superior for false, ele não mostrará uma barra de guias para outros controladores na pilha de navegação.
Antes de push set controller.hidesBottomBarWhenPushed = true
let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(objCreateEventVC, animated: false)
Não há necessidade de definir a propriedade isHidden de tabBar.
Simplesmente, vá para ViewController (no StoryBoard) -> Inspetor de atributos -> Na seção 'View Controller' selecione a caixa de seleção 'Hide Bottom Bar on Push'. Isso funciona como um encanto.
Se você seguir o caminho 'isHidden', precisará fazer um monte de manuseio, ou seja, fazer com que apareça novamente quando você voltar e também remover o espaço vazio inferior depois de esconder a tabBar.
Hide Bottom Bar on Pushtem uma animação desagradável, imo.
Swift 3.
self.tabBarController?.tabBar.isHidden = true
Você também pode configurá-lo na extensão (use a resposta 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
}
}
Esta é a maneira programática para Swift 4.0, 4.1, 4.2, 5.0 e posterior >:
tabBarController?.hidesBottomBarWhenPushed = true
ou
hidesBottomBarWhenPushed = true
Para ocultar a NavigationBar e a tabBar, uso a próxima função:
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
}
}
Quando a orientação da tela mudou, a altura da barra de tabulação também mudou, então eu uso a próxima função para sair da tela inteira e redimensionar a 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 seja útil para você.
vc.hidesBottomBarWhenPushed = truedeve fazer o trabalho. NÃO mostre nem oculte manualmente a barra de guias.