在 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 中更改状态栏颜色? [复制]的主要内容,如果未能解决你的问题,请参考以下文章