gpt4 book ai didi

ios - 如何在 iOS 13 上更改状态栏背景颜色和文字颜色?

转载 作者:IT王子 更新时间:2023-10-29 05:27:37 26 4
gpt4 key购买 nike

随着 iOS 13 的到来,statusBar 的 View 不再可以通过以下方式访问:

value(forKey: "statusBar") as? UIView

由于:

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.'

但不清楚它应该如何用于更改颜色,因为 keyWindow?.windowScene?.statusBarManager 似乎不包含任何与之相关的内容。

我正在编译与 (iOS 10, *) 兼容的代码,因此我打算继续使用 UIKit。

关于这个主题有什么想法吗?

最佳答案

您可以添加一些条件或使用第一个。只需为 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
}
}
}

更新:抱歉,我没有足够的时间在实际项目中对其进行测试,但它在“Hello world”应用程序中有效。您可以阅读有关 keyWindow 的更多信息和 statusBarFrame为了让它变得更好。

extension UIApplication {
var statusBarUIView: UIView? {

if #available(iOS 13.0, *) {
let tag = 3848245

let keyWindow = UIApplication.shared.connectedScenes
.map({$0 as? UIWindowScene})
.compactMap({$0})
.first?.windows.first

if let statusBar = keyWindow?.viewWithTag(tag) {
return statusBar
} else {
let height = keyWindow?.windowScene?.statusBarManager?.statusBarFrame ?? .zero
let statusBarView = UIView(frame: height)
statusBarView.tag = tag
statusBarView.layer.zPosition = 999999

keyWindow?.addSubview(statusBarView)
return statusBarView
}

} else {

if responds(to: Selector(("statusBar"))) {
return value(forKey: "statusBar") as? UIView
}
}
return nil
}
}

关于ios - 如何在 iOS 13 上更改状态栏背景颜色和文字颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56651245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com