我有一个非常简单的设置:
根视图控制器隐藏了导航栏,而辅助视图控制器(Settings
)则显示了带有大标题的导航栏。为了实现导航栏的隐藏和显示,我这样做:
在根视图控制器中:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.setNavigationBarHidden(true, animated: animated)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.setNavigationBarHidden(false, animated: animated)
}
就是这样。在这种特殊情况下,这 except 效果非常好:当我向右平移就好像要解散辅助视图控制器一样,但是向左平移以取消时,导航栏会闪烁,而辅助视图控制器会向后动画这应该。这是slo-mo中的样子:
如果我将隐藏的导航栏移动到辅助视图控制器的viewWillAppear(_:)
中,也会发生同样的事情。
如何停止闪烁并使它正常工作?
答案 0 :(得分:0)
即使我没有解决方案,也确实可以找出导致问题的原因:
如果将状态栏设置为除了导航栏之外还隐藏,则导航栏将像OP中的视频一样跳转。
我个人情况的解决方案基本上是只在viewDidAppear
中隐藏状态栏。不利之处在于,拖动时状态栏的alpha不会动画。