2

我们刚刚在 iOS 13 上更新了我们的应用程序,应用程序崩溃了。实际上,我们正在尝试通过 statusBarWindow 获取窗口对象,但此时应用程序崩溃并在日志部分显示以下错误。

  static var sb: UIWindow? {
        // We use a non-public key here to obtain the `statusBarWindow` window.
        // We have been using it in real world app and it won't be rejected by the review team for using this key.
        let s = "status", b = "Bar", w = "Window"
        return UIApplication.shared.value(forKey: s+b+w) as? UIWindow
    }

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“在 UIApplication 上调用 -statusBar 或 -statusBarWindow 的应用程序:必须更改此代码,因为不再有状态栏或状态栏窗口。在窗口场景中使用 statusBarManager 对象。

它清楚地表明我们不能使用statusBarWindow 我们应该使用 statusBarManager但我无法找到如何使用statusBarManagerObject

4

1 回答 1

1

我们遇到了类似的问题。尽管在 iOS 13 上已弃用 Key Window,但我们决定暂时使用此解决方案。希望能帮助到你

if #available(iOS 13.0, *) {
    let statusBar = UIView(frame: 
   UIApplication.shared.keyWindow?.windowScene?.statusBarManager?.statusBarFrame 
?? CGRect.zero)
     statusBar.backgroundColor = UIColor.init(red: 243/250, green: 243/250, blue: 243/250, alpha: 1)
 UIApplication.shared.keyWindow?.addSubview(statusBar)
} else {
     UIApplication.shared.statusBarView?.backgroundColor = UIColor.init(red: 
243/250, green: 243/250, blue: 243/250, alpha: 1)
}
于 2019-11-21T13:40:21.847 回答