我正在尝试用Xcode 11 beta 6和iOS 13 beta 8构建我的应用程序,但是一旦它开始运行,它就会抛出这个错误:
'NSInternalInconsistencyException',原因:“应用程序名为-statusBar或-statusBarWindow on UIApplication:必须更改此代码,因为不再有状态栏或状态栏窗口。请在窗口场景中使用statusBarManager对象。”
窗口场景是什么?如何使用statusBarManager?
我不确定这是否相关,但我没有使用任何SwiftUI。
发布于 2019-09-05 11:12:05
您需要添加以下扩展来访问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
}
}发布于 2020-11-20 05:31:29
To access StatusBar in Swift 5+和iOS 13+
需要用statusBarManager.替换-satusBar或-statusWindow
if #available(iOS 13.0, *) {
let statusBar = UIView(frame: UIApplication.shared.windows.filter {$0.isKeyWindow}.first?.windowScene?.statusBarManager?.statusBarFrame ?? CGRect.zero)
statusBar.backgroundColor = .appNavigationThemeColor
// statusBar.tag = 100
UIApplication.shared.windows.filter {$0.isKeyWindow}.first?.addSubview(statusBar)
} else {
let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
statusBar?.backgroundColor = .appNavigationThemeColor
}
}希望将有所帮助:)
https://stackoverflow.com/questions/57801484
复制相似问题