在 iOS 13 中更改状态栏颜色? [复制]

Posted

技术标签:

【中文标题】在 iOS 13 中更改状态栏颜色? [复制]【英文标题】:Change Status Bar Color in iOS 13? [duplicate] 【发布时间】:2020-06-16 13:49:07 【问题描述】:

我一直在尝试更改状态栏颜色,但使用 key statusBar 我的应用程序崩溃了。 我猜 ios 13 中没有键“statusBar”。

let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
if statusBar.responds(to: #selector(setter: UIView.backgroundColor)) 
  statusBar.backgroundColor = <Some Color>

添加视图也不适合我。

【问题讨论】:

这能回答你的问题吗? How to change the status bar background color and text color on iOS 13? 请分享控制台日志并注明崩溃原因。 @DharmeshKheni 发生此崩溃:*** 断言失败 -[UIApplication _createStatusBarWithRequestedStyle:orientation:hidden:],*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“应用程序调用 - UIApplication 上的 statusBar 或 -statusBarWindow:此代码必须更改,因为不再有状态栏或状态栏窗口。在窗口场景中使用 statusBarManager 对象。' 【参考方案1】:

第一种方式

你可以检查 iOS 版本并像这样添加自定义状态栏 ->

override func viewDidAppear(_ animated: Bool) 
    if #available(iOS 13, *) 
        let statusBar = UIView(frame: (UIApplication.shared.keyWindow?.windowScene?.statusBarManager?.statusBarFrame)!)
        statusBar.backgroundColor = .systemBackground
        UIApplication.shared.keyWindow?.addSubview(statusBar)
    

第二种方式

您可以自定义UINavigationBarAppearance

if #available(iOS 13.0, *) 
    let navBarAppearance = UINavigationBarAppearance()
    navBarAppearance.configureWithOpaqueBackground()
    navBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.white]
    navBarAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.white]
    navBarAppearance.backgroundColor = <yourColor>
    navigationBar.standardAppearance = navBarAppearance
    navigationBar.scrollEdgeAppearance = navBarAppearance

【讨论】:

以上是关于在 iOS 13 中更改状态栏颜色? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Swift:更改 iOS 13 的状态栏颜色

在 iOS 13 中停止更改状态栏

iOS 7隐藏导航栏时如何更改状态栏的颜色?

更改 iOS 上的状态栏颜色

iOS 故事板:状态栏颜色

在棒棒糖之前更改状态栏背景颜色? [复制]