开发中,有时会遇到首页导航栏隐藏,二级页面需要显示导航栏的问题。
直接设置NavigationBar的hidden属性会导致侧拉时导航条突然出现或者突然消失,首页导航位置出现空白。
在需要隐藏的页面添加如下代码:
override func viewWillAppear(_animated:Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(true, animated:true)
}
对应的,在需要显示的页面true改为false
override func viewWillAppear(_animated:Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(false, animated:true)
}
animated必须为true,这是控制交互的必要参数,animated是侧拉动画。
首页(导航隐藏效果) 二级页面(导航显示效果) 侧拉中的导航效果扩展:
相邻两个页面导航栏状态不同时需要设置,如果 页面2 push到 页面3,且两个页面都不需要隐藏,页面3 就不必设置。
该方法可以写在基类中,用 Bool 变量来控制显隐,默认 false,init 后给需要隐藏的页面设置为 true。如果现有项目已经写好,可以用runtime交换 viewWillAppear 实现。
网友评论