【iOS】隐藏导航栏侧拉时出现空白

开发中,有时会遇到首页导航栏隐藏,二级页面需要显示导航栏的问题。

直接设置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 实现。

你可能感兴趣的:(【iOS】隐藏导航栏侧拉时出现空白)