如何反转状态栏的深色和浅色内容以适应 Xcode 中的深色模式

Posted

技术标签:

【中文标题】如何反转状态栏的深色和浅色内容以适应 Xcode 中的深色模式【英文标题】:How to Reverse Dark & Light Content for Status Bar to Accommodate Dark Mode in Xcode 【发布时间】:2020-03-19 16:27:37 【问题描述】:

我正在尝试为我的应用设置暗模式,但我注意到我的状态栏颜色与应有的颜色相反。在亮模式下它是暗的,而在暗模式下它是亮的。

这里是浅色模式(状态栏显示错误的深色)

这里是暗模式(状态栏显示错误的浅色)

理想情况下,我想反转这些状态栏颜色,这样当它处于亮模式时,状态栏是亮的(白色),而在暗模式时,状态栏是暗的(黑色)。

任何帮助将不胜感激,并提前感谢您!

【问题讨论】:

不确定你的意思,或者如何做到这一点。我不知道您可以更改资产中状态栏的颜色。 你的导航栏颜色是向后的。 【参考方案1】:

如果您想对状态栏进行自定义控制,您可以手动设置状态栏样式。在视图控制器中覆盖 preferredStatusBarStyle

class MyViewController: UIViewController 
    override var preferredStatusBarStyle: UIStatusBarStyle 
        switch traitCollection.userInterfaceStyle  // Light Mode vs. Dark Mode
        case .light:       return .lightContent
        case .dark:        return .darkContent
        case .unspecified: return .darkContent // <-- should never happen
        
    

有关详细信息,请参阅 userInterfaceStyle、preferredStatusBarStyle 和 preferredStatusBarStyle is not working。

【讨论】:

以上是关于如何反转状态栏的深色和浅色内容以适应 Xcode 中的深色模式的主要内容,如果未能解决你的问题,请参考以下文章

如何更改状态栏颜色

Jetpack Compose:如何以编程方式将主题从浅色模式更改为深色模式 onClick

如何在 Storybook 6.0 中自定义深色和浅色主题

在材料设计组件中如何计算原色的浅色和深色版本?

如何在 VSCode 用户设置中为深色和浅色主题指定颜色

CarPlay - 在深色模式下 Apple Maps 以浅色模式显示