Swift iOS 13设置状态栏背景色

Swift iOS 13设置状态栏背景色,swift,statusbar,ios13,Swift,Statusbar,Ios13,我以前有以下代码,但升级到iOS 13后,我出现以下错误: UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 94/225, green: 64/255, blue:204/255, alpha: 1.0) UIApplication上名为-statusBar或-statusBarWindow的应用程序:此代码必须更改,因为不再有状态栏或状态栏窗口。改用窗口场景上的statusBarManager对象。” 现在

我以前有以下代码,但升级到iOS 13后,我出现以下错误:

UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 94/225, green: 64/255, blue:204/255, alpha: 1.0)
UIApplication上名为-statusBar或-statusBarWindow的应用程序:此代码必须更改,因为不再有状态栏或状态栏窗口。改用窗口场景上的statusBarManager对象。”

现在如何设置状态栏的背景色

警告消息提到使用statusBarManager,所以我做了类似的事情,但我无法让它工作

var statusBar = UIView()

    if #available(iOS 13.0, *) {
        statusBar = UIView(frame: UIApplication.shared.keyWindow?.windowScene?.statusBarManager?.statusBarFrame ?? CGRect.zero)
        statusBar.backgroundColor = UIColor.red
        UIApplication.shared.keyWindow?.addSubview(statusBar)
    } else {
        //ios 12 and below
        UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 94/225, green: 64/255, blue:204/255, alpha: 1.0)
    }

Kuray在这里为我提供了一个解决方案:

将以下内容添加到viewdidload。请转到他的中间位置,给他鼓掌

if #available(iOS 13.0, *) {
        let app = UIApplication.shared
        let statusBarHeight: CGFloat = app.statusBarFrame.size.height

        let statusbarView = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: statusBarHeight))
        statusbarView.backgroundColor = UIColor.red
        view.addSubview(statusbarView)
    } else {
        let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
        statusBar?.backgroundColor = UIColor.red
    }

Kuray在这里为我提供了一个解决方案:

将以下内容添加到viewdidload。请转到他的中间位置,给他鼓掌

if #available(iOS 13.0, *) {
        let app = UIApplication.shared
        let statusBarHeight: CGFloat = app.statusBarFrame.size.height

        let statusbarView = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: statusBarHeight))
        statusbarView.backgroundColor = UIColor.red
        view.addSubview(statusbarView)
    } else {
        let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
        statusBar?.backgroundColor = UIColor.red
    }

您是否尝试使用statusBarManager?我会将此标记为的副本,但没有一个有效答案。您是否尝试使用statusBarManager?我会将此标记为的副本,但没有一个有效答案。额外的荣誉,因为您指出这进入viewDidLoadstatusBarFrame是不推荐的,因为您指出,这将进入viewDidLoadstatusBarFrame,但已弃用