【问题标题】:Is is possible to detect either user has chosen dark mode on iPhone from xcode 10.x是否可以从 xcode 10.x 检测到任一用户在 iPhone 上选择了暗模式
【发布时间】:2020-02-11 00:08:53
【问题描述】:

我仍在使用 xcode 10.2.1 并且由于其他一些问题尚未升级到 xcode 11。现在我想检测使用 iOS 13 的用户是否选择了深色模式或浅色模式作为他们的应用设置。

根据苹果文档,如果开发人员通过以前的 xcode 构建应用程序,则应用程序默认处于轻量模式,这是我的情况,很好。

那么,有没有办法检测用户当前的外观模式。

我正在使用代码 sn-p:

if #available(iOS 13.0, *) {
            guard(traitCollection.responds(to: #selector(getter: UITraitCollection.userInterfaceStyle)))
                else { return }

            let style = traitCollection.userInterfaceStyle

            switch style {
            case .light:
                print("light")
            case .dark:
                print("dark")
            case .unspecified:
                print("unspecified")
            @unknown default:
                print("unspecified")
            }

        }

但它总是返回 unspecified 或 light。

【问题讨论】:

  • 如果您的应用构建在低于 iOS 13 SDK 的版本上,则将显示为浅色外观并且不支持深色模式,因此您无需检查,直到您更新 Xcode 和 iOS SDK。跨度>
  • 是的,如果 SDK 是旧的,我可以支持暗模式。他们唯一知道的原因是了解用户数量以了解更新 Xcode 的严重性。

标签: ios swift ios-darkmode


【解决方案1】:

您可以使用此属性检查当前样式是否为暗模式:

if #available(iOS 13.0, *) {
    if UITraitCollection.current.userInterfaceStyle == .dark {
        print("Dark mode")
    }
    else {
        print("Light mode")
    }
}

【讨论】:

  • UITraitCollection 在带有 xcode 11 的 iOS 13 中只有 current 可用。我正在寻找 Xcode 10.x 的东西
猜你喜欢
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 2014-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多