我正在试图弄清楚如何在我的iOS swift应用程序中隐藏标签栏.我不关心任何花哨的动画或任何东西.我可以把它放在ViewDidLoad()函数中.
Dha*_*esh 182
您可以在ViewDidLoad()
方法中使用它.
self.tabBarController?.tabBar.hidden = true
Run Code Online (Sandbox Code Playgroud)
对于swift 3.0:
self.tabBarController?.tabBar.isHidden = true
Run Code Online (Sandbox Code Playgroud)
或者您可以通过以下方式更改标签栏的z位置:
self.tabBarController?.tabBar.layer.zPosition = -1
Run Code Online (Sandbox Code Playgroud)
如果你想再次展示它,那么:
self.tabBarController?.tabBar.layer.zPosition = 0
Run Code Online (Sandbox Code Playgroud)
Aks*_*kur 123
接受的答案有效,但转换到其他视图时会出现与标签栏相关的不连贯动画.
虽然Kalpesh的解决方案对我来说非常合适,但我还想知道,我发现每个视图控制器都有一个hidesBottomBarWhenPushed属性(查看故事板).如果你想隐藏标签栏,你应该勾选它.它会很棒.
更新:我不确定这是否是一个已知的东西,但这是苹果文档页面所说的:
添加为导航控制器子级的视图控制器可以在屏幕底部显示可选工具栏.最顶层视图控制器上此属性的值确定工具栏是否可见.如果此属性的值为true,则隐藏工具栏.如果此属性的值为false,则条形图可见.
我认为这意味着您必须在最顶层的视图控制器(导航堆栈上的第一个)上设置hidesBottomBarWhenPushed的基本值.一旦将其设置为true,您可以将其更改为false或true为其他视图控制器堆.但是,如果您的最顶层视图控制器的hidesBottomBarWhenPushed值为false,则它不会显示导航堆栈上其他控制器的选项卡栏.
kal*_*ani 70
在push set controller.hidesBottomBarWhenPushed = true之前
let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(objCreateEventVC, animated: false)
Run Code Online (Sandbox Code Playgroud)
Tej*_*jas 25
无需设置tabBar的isHidden属性.
简单地说,转到ViewController(在StoryBoard中) - >属性检查器 - >在"视图控制器"部分下,选择"在推送时隐藏底栏"复选框.这就像一个魅力.
如果你采用'isHidden'方式,你需要做很多处理,即当你回去时再次出现,并在隐藏tabBar后删除底部空白区域.
对于那些希望用动画隐藏/显示标签栏的人。
自 iOS 13 起,UITabBar 的动画行为发生了变化。您不能再使用CGAffineTransform
,而是应该为其框架位置设置动画。
请在此处查看我的完整指南:隐藏和显示带动画的选项卡栏
隐藏标签栏:
UIView.animate(withDuration: 0.7, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.7, options: .curveEaseOut) {
if let tabBarFrame = self.tabBarController?.tabBar.frame {
self.tabBarController?.tabBar.frame.origin.y = navigationController.view.frame.maxY + tabBarFrame.height
}
navigationController.view.layoutIfNeeded()
} completion: { _ in
self.tabBarController?.tabBar.isHidden = true
}
Run Code Online (Sandbox Code Playgroud)
显示标签栏:
UIView.animate(withDuration: 0.7, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.7, options: .curveEaseOut) {
if let tabBarFrame = self.tabBarController?.tabBar.frame {
self.tabBarController?.tabBar.frame.origin.y = navigationController.view.frame.maxY - tabBarFrame.height
}
navigationController.view.layoutIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)
确保layoutIfNeeded()
在 内部调用UIView.animate
以触发动画更改。
归档时间: |
|
查看次数: |
72260 次 |
最近记录: |