作者:lucky2502882647 | 来源:互联网 | 2022-10-20 17:07
随着iOS 13的到来,statusBar的视图不再能通过低谷访问:
value(forKey: "statusBar") as? UIView
由于:
由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“在UIApplication上名为-statusBar或-statusBarWindow的应用程序:此代码必须更改,因为不再有状态栏或状态栏窗口。而是在窗口场景上使用statusBarManager对象。”
但是目前尚不清楚应如何使用它来更改颜色,因为keyWindow?.windowScene?.statusBarManager
它似乎不包含与之相关的任何内容。
我正在编译具有(iOS 10,*)兼容性的代码,因此我打算继续使用UIKit。
关于这个主题有什么想法吗?
1> 小智..:
您可以添加一些条件或使用第一个条件。只需为UIApplication创建一些扩展即可。
extension UIApplication {
var statusBarUIView: UIView? {
if #available(iOS 13.0, *) {
let tag = 38482
let keyWindow = UIApplication.shared.windows.filter {$0.isKeyWindow}.first
if let statusBar = keyWindow?.viewWithTag(tag) {
return statusBar
} else {
guard let statusBarFrame = keyWindow?.windowScene?.statusBarManager?.statusBarFrame else { return nil }
let statusBarView = UIView(frame: statusBarFrame)
statusBarView.tag = tag
keyWindow?.addSubview(statusBarView)
return statusBarView
}
} else if responds(to: Selector(("statusBar"))) {
return value(forKey: "statusBar") as? UIView
} else {
return nil
}
}
}
在iOS 13中不推荐使用`keyWindow`。