热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在iOS13上更改状态栏的背景颜色和文本颜色?

如何解决《如何在iOS13上更改状态栏的背景颜色和文本颜色?》经验,为你挑选了1个好方法。

随着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`。
推荐阅读
author-avatar
lucky2502882647
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有