如何 hide/show UI 某些 UI 视图的导航栏
How to hide/show UI Navigation Bar for certain UIViews
请看下面的故事板:
我需要为 UITableViewController "Zero" 动态隐藏 UINavigationBar 并为 UITableViewController "One" 和 "Two" 显示它。
最好的方法是什么?
您可以设置 UINavigationBar
的 hidden
属性 当视图出现时...
self.navigationController?.navigationBar.hidden = true
只需在您希望隐藏导航栏的视图中执行此操作
试试这个..
override func viewWillAppear(animated: Bool) {
self.navigationController?.navigationBarHidden = true
}
您可以使用 viewWillDisappear 再次将其设置为可见
我实现了一种方法,它在一秒钟后非常平滑地隐藏了 NavigationController...我更喜欢这个而不是仅仅隐藏它 ;)
var navigation: UINavigationController!
override func viewDidLoad() {
navigation = navigationController!
timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "animate", userInfo: nil, repeats: false)
}
func animate(){
hideController(self.navigation)
}
func hideController(navigationController: UINavigationController){
UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
self.navigationController.alpha = 0.0
}, completion: nil)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
if self.navigationController!.respondsToSelector("interactivePopGestureRecognizer") {
timer.invalidate()
UIApplication.sharedApplication().statusBarHidden = false
}
}
希望能帮到你
您也可以将隐藏功能放入另一个 class,这样您就不需要在其他视图中重新键入它了。
编辑:
我忘了提..当你返回一个视图时,你需要将 NavigationController 设置回可见...因此创建另一个方法,例如函数 show
并将其 alpha 设置为 1.0
func show(navigationController: UINavigationController){
UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
self.navigationController.alpha = 1.0
}, completion: nil)
}
请看下面的故事板:
我需要为 UITableViewController "Zero" 动态隐藏 UINavigationBar 并为 UITableViewController "One" 和 "Two" 显示它。
最好的方法是什么?
您可以设置 UINavigationBar
的 hidden
属性 当视图出现时...
self.navigationController?.navigationBar.hidden = true
只需在您希望隐藏导航栏的视图中执行此操作
试试这个..
override func viewWillAppear(animated: Bool) {
self.navigationController?.navigationBarHidden = true
}
您可以使用 viewWillDisappear 再次将其设置为可见
我实现了一种方法,它在一秒钟后非常平滑地隐藏了 NavigationController...我更喜欢这个而不是仅仅隐藏它 ;)
var navigation: UINavigationController!
override func viewDidLoad() {
navigation = navigationController!
timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "animate", userInfo: nil, repeats: false)
}
func animate(){
hideController(self.navigation)
}
func hideController(navigationController: UINavigationController){
UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
self.navigationController.alpha = 0.0
}, completion: nil)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
if self.navigationController!.respondsToSelector("interactivePopGestureRecognizer") {
timer.invalidate()
UIApplication.sharedApplication().statusBarHidden = false
}
}
希望能帮到你
您也可以将隐藏功能放入另一个 class,这样您就不需要在其他视图中重新键入它了。
编辑:
我忘了提..当你返回一个视图时,你需要将 NavigationController 设置回可见...因此创建另一个方法,例如函数 show
并将其 alpha 设置为 1.0
func show(navigationController: UINavigationController){
UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
self.navigationController.alpha = 1.0
}, completion: nil)
}