ios - 状态栏在模式演示中消失

标签 ios modalviewcontroller uistatusbar

在我的 iOS 应用程序中,我使用转换以模态方式呈现 View Controller (在本例中为 AVPlayerViewController)。

在过渡开始时,状态栏会立即消失,并在动画(无论何种类型——交叉淡入淡出、覆盖垂直)隐藏 View Controller 的底层堆栈之前,以丑陋的方式猛拉出应用程序的内容。新的模态呈现的 VC 上有一个状态栏。

我不希望状态栏在模态演示动画的开始 消失。

我设置了一个空白项目并模拟了我的应用程序的相同基本结构,当呈现 View Controller 时,状态栏在过渡期间保持静止。

什么会导致状态栏在模态演示动画开始时消失?

(在 iPhone X 上的 iOS 11 和模拟器上的 iOS 10/9 上测试。)

编辑:

为了执行演示,应用程序的 Root View Controller 正在监听通知并调用,大致如下:

let vc = AVPlayerViewController()
// configure the player
self.present(vc, animated: true) {
    vc.player?.play()
}

这就是奇怪消失的原因。

有趣的是,当我进入 Storyboard 并从同一个 Root View Controller 设置一个 Modal Segue(到一个空白 View Controller )时,触发了一个随机添加的按钮,由此产生的过渡是平滑的。

另一个数据点是,当我关闭 present(:animated:completion:) 中的动画时,状态栏会保持原样,直到模式覆盖它。

最佳答案

就我而言,这是在 iOS 9 和 iOS 10 中以模态方式呈现 AVPlayerViewController 时的一个问题。这个问题似乎在 iOS 11 中得到了解决。

我在 iOS 11 上看到的是一个略有不同的问题——在强制横向模式下模态呈现 AVPlayerViewController,这导致状态栏在动画开始时翻转方向。

关于ios - 状态栏在模式演示中消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48858171/

相关文章:

ios - 在 iOS 9 上呈现带有状态栏的 View Controller 时 View 向下移动

ios - 如何在 Swift 5 中添加 ScrollView ?

ios - 仅 cellForRowAt indexPath 未调用所有其他数据源和委托(delegate)

ios - 呈现的模态视图 Controller 未像表单一样显示

ios - 无法更改状态栏样式

ios - 如何获得如下图所示的透明状态栏?

ios swift 4 本地数据库说明

ios - 从单元格的 subview 中删除按钮

iphone - 将 UIActivityIndi​​cator 添加到模态视图(ELCimagepicker)

iphone - 如何向表格 View 添加导航栏?