代码之家  ›  专栏  ›  技术社区  ›  Lukas Würzburger Chadwick Wood

在UIApplication上调用了应用程序-statusBar或-statusBarWindow

  •  0
  • Lukas Würzburger Chadwick Wood  · 技术社区  · 5 年前

    我正在尝试使用Xcode 11 beta 6和iOS 13 beta 8构建我的应用程序,但一旦开始运行,它就会抛出此错误:

    由于意外异常而终止应用程序' NSInternalInconsistencyException',reason:'应用程序在UIApplication上调用了-statusBar或-statusBarWindow:必须更改此代码,因为不再有状态栏或状态栏窗口。改为在窗口场景中使用statusBarManager对象。 '

    什么是窗口场景以及如何使用 statusBarManager ?
    我不确定这是否相关,但我没有使用任何 SwiftUI .

    0 回复  |  直到 5 年前
        1
  •  6
  •   Manav    5 年前

    您需要添加以下扩展名以访问statusbarview:

    extension UIApplication {
        var statusBarUIView: UIView? {
            if #available(iOS 13.0, *) {
                let tag = 38482458385
                if let statusBar = self.keyWindow?.viewWithTag(tag) {
                    return statusBar
                } else {
                    let statusBarView = UIView(frame: UIApplication.shared.statusBarFrame)
                    statusBarView.tag = tag
    
                    self.keyWindow?.addSubview(statusBarView)
                    return statusBarView
                }
            } else {
                if responds(to: Selector(("statusBar"))) {
                    return value(forKey: "statusBar") as? UIView
                }
            }
            return nil
        }
    }