我正在试图弄清楚如何隐藏iOS swift应用中的标签栏。我不关心任何花哨的动画或任何东西。我可以把它放在ViewDidLoad()函数中。
答案 0 :(得分:157)
您可以在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
答案 1 :(得分:104)
接受的答案有效,但转换到其他视图时会出现与标签栏相关的不连贯动画。
还想添加虽然Kalpesh的解决方案对我来说非常合适,但我发现每个视图控制器都有hidesBottomBarWhenPushed的属性(查看故事板。)如果你想隐藏标签栏,你应该勾选在那。它会很棒。
更新:我不确定这是否是一个已知的东西,但这里是苹果文档页面所说的:
我认为这意味着您必须在最顶层的视图控制器(导航堆栈中的第一个)上设置hidesBottomBarWhenPushed的基本值。一旦将其设置为true,您可以将其更改为false或true为另一个在堆栈上的viewcontrollers。但是,如果您的最顶层视图控制器的hidesBottomBarWhenPushed值为false,则它不会显示导航堆栈上其他控制器的标签栏。
答案 2 :(得分:61)
在推送之前设置controller.hidesBottomBarWhenPushed = true
let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(objCreateEventVC, animated: false)
答案 3 :(得分:24)
无需设置tabBar的isHidden属性。
简单地说,转到ViewController(在StoryBoard中) - >属性检查器 - >在' View Controller'部分选择'隐藏推杆底部栏'复选框。这就像一个魅力。
如果你去了隐藏的'您需要进行大量处理的方式,即在您返回时再次显示它,并在隐藏tabBar后删除底部空白区域。
答案 4 :(得分:2)
self.tabBarController?.tabBar.isHidden = true
答案 5 :(得分:1)
您也可以将其设置为扩展名(使用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
}
}
答案 6 :(得分:0)
This is the way programmatically for Swift 4.0, 4.1, 4.2, 5.0 and later >:
tabBarController?.hidesBottomBarWhenPushed = true
or
hidesBottomBarWhenPushed = true
答案 7 :(得分:0)
要隐藏navigationBar和tabBar,请使用下一个功能:
Name Ranking
test1 | 1
test2 | 2
test3 | 3
test4 | 4
...
当屏幕方向改变时,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
}
}
我希望它对您有用。
答案 8 :(得分:0)
这是我的代码。这只是为了隐藏它的标签栏。 (如果没有很好地建立框架,底部将出现黑色视图。)
var oldTabbarFr: CGRect = .zero
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
oldTabbarFr = self.tabBarController?.tabBar.frame ?? .zero
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.tabBarController?.tabBar.isHidden = true
self.tabBarController?.tabBar.frame = .zero
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.tabBarController?.tabBar.isHidden = false
self.tabBarController?.tabBar.frame = oldTabbarFr
}