0

就像标题所说的那样,当您尝试在 UIViewController 之间导航同时切换状态栏隐藏/取消隐藏时,会出现意外行为,即安全区域受限视图在 iOS 上被放大。

可在此处找到可重现的项目。

我想知道这是否是iOS中的错误。希望有人能解释为什么会发生这个问题以及我们如何解决它。

更新

对于上面的“放大”部分:在 UIViewController 的导航过程中,
问题只发生在5 次中的 2-3 次,因此您可能需要多加注意才能注意到它。
放大的部分是:绿色背景和两个白色框。
请注意,视图在导航前后保持相同的大小。

此外,在项目中,您可能希望连续点击“按钮”和“关闭”按钮,以便快速切换,轻松发现问题。

4

1 回答 1

0

问题:

您隐藏状态栏和更改方向导致闪烁的代码。实际上,这在后台线程中有效,并且您按下按钮和关闭按钮的速度如此之快以至于您感觉到了。操作系统正在过渡,这将影响您的视野高度。

override var prefersStatusBarHidden: Bool {
    return true
}

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return [ .landscape ]
}

解决方案:

  1. 不要让用户这么快地来回走动,直到之前的解雇没有完成(完成处理程序)
  2. 使用过渡动画在视觉上降低最终用户的效果。
于 2019-08-08T06:03:25.633 回答