在 iOS 13 中停止更改状态栏
Stop changing status bar in iOS 13
我的应用程序中已经有浅色和深色主题。我还支持 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)
非常感谢
您可以使用 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
}
}
}
我的应用程序中已经有浅色和深色主题。我还支持 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)
非常感谢
您可以使用 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
}
}
}