【问题标题】:Navigation bar flashes when cancelling back swipe取消向后滑动时导航栏闪烁
【发布时间】:2018-11-13 02:08:31
【问题描述】:

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

根视图控制器隐藏了导航栏,辅助视图控制器 (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)
}

就是这样。对于这种特殊情况,这完美除了:当我向右平移时,好像我正在关闭辅助视图控制器但然后向左平移以取消,导航栏闪烁,而辅助视图控制器动画返回为它应该。这是慢动作的样子:

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

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

【问题讨论】:

  • 你真的需要用动画让它出现/消失吗?您是否尝试过设置navigationController?.isNavigationBarHidden
  • @GustavoBarbosa,这不起作用,因为当我完全拖动时,导航栏消失了

标签: ios swift uinavigationcontroller


【解决方案1】:

虽然我没有解决方案,但确切地说,我已经弄清楚了导致问题的原因:

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

我个人情况的解决方案基本上是只在viewDidAppear中隐藏状态栏。缺点是这意味着当你拖动状态栏 alpha 时不会动画。

【讨论】:

  • 这并不能解决我的问题。关闭视图时它仍然可见
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
相关资源
最近更新 更多