【发布时间】:2018-02-19 00:34:03
【问题描述】:
在我的 iOS 应用程序中,我使用转换以模态方式呈现视图控制器(在本例中为 AVPlayerViewController)。
在过渡开始时,状态栏会立即消失,并以一种丑陋的方式猛拉应用程序的内容,然后动画(无论是什么类型的——交叉淡入淡出,垂直覆盖)隐藏底层的视图控制器堆栈。新的模态显示的 VC 上有一个状态栏。
我不希望状态栏在模态演示动画的开始处消失。
我设置了一个空白项目并模拟了我的应用程序的相同基本结构,当呈现视图控制器时,状态栏在过渡期间保持静止。
什么会导致状态栏在模态演示动画开始时消失?
(在 iOS 11 上的 iPhone X 和 iOS 10/9 上的模拟器上测试。)
编辑:
为了执行演示,应用的根视图控制器正在监听通知并调用,大致如下:
let vc = AVPlayerViewController()
// configure the player
self.present(vc, animated: true) {
vc.player?.play()
}
这就是奇怪消失的原因。
有趣的是,当我进入 Storyboard 并从同一个根视图控制器设置一个 Modal Segue(到一个空白视图控制器)时,触发了一个随机添加的按钮,结果过渡是平滑的。
另一个数据点是,当我 关闭 present(:animated:completion:) 中的动画时,状态栏会一直保持不动,直到模态框覆盖它。
【问题讨论】:
-
"什么会导致状态栏在模态演示动画开始时消失?" your 项目中与空白项目不同 的东西。但无论是什么,你都没有告诉我们。你没有告诉我们关于你在做什么的任何事情。
-
@matt 有效。有趣的是,我经常在 SO 上看到您的 cmets 指出人们的问题中缺乏数据,现在我自己也经历过。我放了更多数据,但可能仍然不足以获得帮助。当我解决问题后,我会回答它并重新构建问题以使其有用。
-
是的,笑话是我经常说,“直接从模板中用一个普通的项目试试这个”,你已经完成了那个测试——这太棒了。所以我们已经完成了 9/10:我们知道 you 正在做一些导致问题的事情。但是,正如我所说,你没有给我们一个关于它可能是什么的线索。 :)
-
如果您可以在一个非常小的项目中重现该问题并将其发布,我将很高兴看到它。不能保证我能弄明白,但尝试总是很有趣。
-
@matt 感谢您的提议!在尝试为您重现问题的过程中,我发现这发生在专门以模态方式呈现 AVPlayerViewController 时,并且仅在 iOS 9 和 iOS 10 上。所以......我不确定为什么会发生这种情况,但我的解决方案现在是禁用演示文稿上的动画。
标签: ios modalviewcontroller uistatusbar