首页 > 解决方案 > 如何以编程方式更改 statusBarStyle?

问题描述

我正在为 iOS13 构建一个应用程序。我想根据用户可以选择的配色方案更改状态栏的文本颜色。似乎无法直接更改状态栏的文本颜色,所以我尝试更改 statusBarStyle。

首先我尝试:

var myStatusBarStyle = UIStatusBarStyle.default { didSet { setNeedsStatusBarAppearanceUpdate() } }
override var preferredStatusBarStyle : UIStatusBarStyle { return myStatusBarStyle; }

但它没有用。

然后我尝试:

UIApplication.shared.statusBarStyle = myStatusBarStyle;

它确实完成了工作!但 Xcode 给出警告:“‘statusBarStyle’在 iOS 13.0 中已弃用:使用已安装的窗口场景的 statusBarManager 属性。”

所以,在 sceneWillEnterForeground(_ scene: UIScene) 我尝试:

guard let ws = (scene as? UIWindowScene) else { return }
if let t = ws.statusBarManager { print(t.statusBarStyle) }

不幸的是, t.statusBarStyle 是只读的。

现在,我该怎么办?ps:我在 Main.storyboard 中没有导航栏或标签栏。

标签: iosswift

解决方案


  • 在 iOS 13 中,我们不允许这样做,但总是有逃生根.. 我用过
    self.navigationController?.navigationBar.barStyle = .black

使状态栏变黑并且有效

您可以根据需要使用各种选项代替黑色(.default、.blackTranslucent、.blackOpaque)代替 .black


推荐阅读