【发布时间】:2019-11-25 07:19:50
【问题描述】:
我的应用程序使用defaultstatus 栏样式用于登录前屏幕。
- 登录后,应用程序使用lightContent 样式作为整个应用程序的状态栏。
在 iOS 12 之前一切正常。它开始在 iOS 13 上产生问题(仅在启用深色模式时)。
这是我已经尝试过的东西,但仍然无法正常工作。
- 我确实将
UIUserInterfaceStyle设置为Light - 我确实将
UIViewControllerBasedStatusBarAppearance设置为YES - 然后我在单个视图控制器中尝试了以下代码
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
- 还在类文件的
viewDidLoad()中添加了这一行。
setNeedsStatusBarAppearanceUpdate()
但是,我仍然没有摆脱这个与状态栏相关的东西。我只需要在登录前让我的状态栏在屏幕上变暗,一旦用户登录,它就会亮起。
整个应用程序在深色和浅色模式下都应该具有相同的 UI。 (与 iOS 13 以下的操作系统一样)目前运行良好,但只有状态栏在改变颜色。
注意:禁用深色模式后一切正常。这仅在启用深色模式时才会产生问题。
据我了解,我在 Xcode 中创建了一个新项目,并添加了 3 个具有不同状态栏外观的屏幕。
一个可行的案例
VC1 - Default 风格
VC2 - Default 风格
VC3 - LightContent 风格
一个可行的案例
VC1 - LightContent 风格
VC2 - LightContent 风格
VC3 - Default 风格
不工作(失败)案例
VC1 - Default 风格
VC2 - LightContent 风格
VC3 - Default 风格
我的假设是 - 如果您在应用程序中使用任何一种样式,无论设备的深色或浅色模式如何,它都能正常工作。但是,如果您在应用中将Default 和LightContent 结合起来作为状态栏的外观,那么在启用暗模式时它不会按预期工作。
谁能帮我解决状态栏样式的这种行为?
这是我的三个视图控制器文件。它只是将一个控制器推到另一个控制器上。这是我上面提到的演示项目的文件。其中有失败案例。
暗模式关闭时:即使我在 VC2 中覆盖状态栏样式,我也总是得到default 状态栏样式。
暗模式关闭时: 即使我在 VC1 和 VC3 中覆盖状态栏样式,我总是得到lightContent 状态栏样式。
【问题讨论】:
标签: swift statusbar ios-darkmode