在 iOS 13 中停止更改状态栏
Posted
技术标签:
【中文标题】在 iOS 13 中停止更改状态栏【英文标题】:Stop changing status bar in iOS 13 【发布时间】:2020-01-21 22:14:26 【问题描述】:我的应用中已有明暗主题。我也支持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)
非常感谢
【问题讨论】:
检查你是否在 Info.plist 中覆盖它 不,我没有更改 Info.plist 中的任何内容 遇到同样的问题! 【参考方案1】:您可以使用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
【讨论】:
没有Appearance.theme Appearance.theme 是@Robert 项目的一部分。以上是关于在 iOS 13 中停止更改状态栏的主要内容,如果未能解决你的问题,请参考以下文章