iOS 停止状态栏在动画期间消失

iOS stop status bar from disappearing during animation

我正在从带状态栏的 ViewController 切换到不带状态栏的状态。

在动画播放过程中,我看到状态栏在旧 ViewController 上快速向上滑动,而新 ViewController 在顶部滑动。

对于为什么会发生这种情况以及如何解决这个问题有什么建议吗?

新的 ViewController 没有状态栏,原因是:

override var prefersStatusBarHidden: Bool {
    return true
}

演示文稿样式为

modalPresentationStyle="overCurrentContext"

新:

创建了一个带有问题的测试 XCode 项目: https://github.com/paul301/TestSlideUp

要使新的 ViewController 停留在旧状态栏的顶部,您需要创建一个新的 UIWindow 并手动制作动画。
示例代码:

var window = UIWindow()

//to show new view controller
func showWindow() {
    let vc = NewViewController()
    self.window.rootViewController = vc
    self.window.backgroundColor = UIColor.clear
    self.window.windowLevel = UIWindowLevelStatusBar
    self.window.frame = CGRect(x: 0, y: UIScreen.main.bounds.height, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
    self.window.isHidden = false

    UIView.animate(withDuration: 0.5) { 
        self.window.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
    }
}