取消向后滑动时,导航栏会闪烁

时间:2018-11-13 02:08:32

标签: ios swift uinavigationcontroller

我有一个非常简单的设置:

根视图控制器隐藏了导航栏,而辅助视图控制器(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中的样子:

screengrab

如果我将隐藏的导航栏移动到辅助视图控制器的viewWillAppear(_:)中,也会发生同样的事情。

如何停止闪烁并使它正常工作?

1 个答案:

答案 0 :(得分:0)

即使我没有解决方案,也确实可以找出导致问题的原因:

如果将状态栏设置为除了导航栏之外还隐藏,则导航栏将像OP中的视频一样跳转。

我个人情况的解决方案基本上是只在viewDidAppear中隐藏状态栏。不利之处在于,拖动时状态栏的alpha不会动画。