我的应用程序中已有一个明暗主题。我还支持iOS 13暗模式,问题是,即使选择了应用的亮或暗模式,更改iOS主题也会导致更改状态栏颜色,因此当ios暗模式打开时,状态栏在我的应用中的浅色主题。 我试图通过此代码块来阻止它,但是在我的情况下它不起作用:
override var preferredStatusBarStyle: UIStatusBarStyle {
switch Appearance.theme {
case .dark:
return .lightContent
case .light:
if #available(iOS 13.0, *) {
return .darkContent
} else {
return .default
}
case .apple:
return .default
}
}
我在拆分视图控制器中添加了它,我还在每个控制器中添加了它,但没有任何变化。有谁知道如何解决?
我也对UITabbar
和UISegmentedControl
我应该说,当选择应用程序中的明暗模式时,更改iOS主题应该会影响应用程序元素(状态栏,标签栏,UISegmentedControl)
非常感谢
答案 0 :(得分:2)
您可以使用overrideUserInterfaceStyle
强制控制器在iOS13
中采用特定样式。
要解决您的问题,请输入以下代码:
override var preferredStatusBarStyle: UIStatusBarStyle {
switch Appearance.theme {
case .dark:
return .lightContent
case .light:
if #available(iOS 13.0, *) {
return .darkContent
} else {
return .default
}
case .apple:
return .default
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if #available(iOS 13.0, *) {
switch Appearance.theme {
case .dark:
overrideUserInterfaceStyle = .dark
case .light:
overrideUserInterfaceStyle = .light
case .apple:
overrideUserInterfaceStyle = .unspecified
}
}
}