【发布时间】:2017-06-14 19:59:47
【问题描述】:
我希望导航控制器堆栈中的推送视图控制器之一是“全屏” - 没有导航栏和状态栏。 我有这段代码在导航控制器的一个视图控制器中隐藏和显示导航栏(我希望它被全屏推送):
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(true, animated:animated)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.setNavigationBarHidden(false, animated:animated)
}
在同一个 viewController 中,我还用这个隐藏了状态栏:
override var prefersStatusBarHidden: Bool {
return true
}
它按预期隐藏和显示,但问题是我在推动此视图控制器并从它返回时在过渡上出现黑色条纹(参见图片)。
推送到这个控制器: Push to this controller
然后从这个控制器返回(返回按钮):
这似乎是由于 prefersStatusBarHidden 函数而发生的。删除它可以解决问题。
显示/隐藏导航栏的代码取自: https://stackoverflow.com/a/2406167/4207465
并基于苹果开发者库: “显示和隐藏导航栏 - 当导航栏与导航控制器结合使用时,您总是使用 UINavigationController 的 setNavigationBarHidden:animated: 方法来显示和隐藏导航栏..."
不知道为什么会这样, 感谢您的帮助!
【问题讨论】:
-
看来这是因为prefersStatusBarHidden 删除它解决了这个问题,调查原因..
标签: ios swift uinavigationcontroller uinavigationbar uistoryboardsegue