Search code examples
iosswiftuiwindowuistatusbarios13

App called -statusBar or -statusBarWindow on UIApplication


I'm trying to build my app with Xcode 11 beta 6 and iOS 13 beta 8 but it throws this error once it starts to run:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'App called -statusBar or -statusBarWindow on UIApplication: this code must be changed as there's no longer a status bar or status bar window. Use the statusBarManager object on the window scene instead.'

What is the window scene and how do I use the statusBarManager?
And I'm not sure if this is relevant, but I'm not using any SwiftUI.


Solution

  • You need to add the following extension to access 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
        }
    }