导航栏和更改导航栏可见性时的奇怪视图效果

时间:2015-07-06 07:46:55

标签: ios uinavigationcontroller uinavigationbar show-hide

我有一个UINavigationController,我希望它的根视图控制器隐藏导航栏,所以我在根视图控制器的类中写了这个:

override func viewWillLayoutSubviews() {
    self.navigationController?.setNavigationBarHidden(true, animated: false)
}

这有效地隐藏了导航栏。此根视图控制器有一个按钮,在按下时会按下新的视图控制器。我希望第二个视图控制器显示导航栏,所以在其子类中:

override func viewWillLayoutSubviews() {
    self.navigationController?.setNavigationBarHidden(false, animated: false)
}

然后会显示导航栏,但是当我点击其后退按钮并导航回上一个视图控制器(我想要隐藏导航栏的那个)时,在其视图顶部的瞬间显示一个导航栏应该在的黑色空间,最后视图“再次”到屏幕顶部。

我怎么能避免这种影响?

1 个答案:

答案 0 :(得分:1)

尝试在viewWillAppear中隐藏导航栏。

override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated); self.navigationController?.setNavigationBarHidden(true, animated: false) }