【问题标题】:Stop changing status bar in iOS 13在 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
    }
}

我在拆分视图控制器中添加了它,我也在每个控制器中添加了它,但没有任何变化。有谁知道如何解决它? UITabbarUISegmentedControl 我也有同样的问题

我应该说,当我的应用程序中选择明暗模式时,更改 iOS 主题应该会影响应用程序元素(状态栏、标签栏、UISegmentedControl)

非常感谢

【问题讨论】:

  • 检查你是否在 Info.plist 中覆盖它
  • 不,我没有更改 Info.plist 中的任何内容
  • 遇到同样的问题!

标签: swift statusbar ios13


【解决方案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 项目的一部分。
猜你喜欢
  • 2019-11-26
  • 2020-06-16
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多