【问题标题】:How to check if Dark Appearance is enabled tvOS如何检查是否启用了深色外观 tvOS
【发布时间】:2016-09-18 21:29:12
【问题描述】:

如何检查用户是否在其 Apple TV 上启用了深色外观?

【问题讨论】:

    标签: swift tvos tvos10


    【解决方案1】:

    使用UIUserInterfaceStyle,首先在 tvOS 10 中可用,我们可以检查用户设置的外观。

    例如:

    func checkInterfaceStyle() {
        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")
        }
    }
    

    此外,如果您是从 Xcode 7/tvOS 9.0 项目更新,则需要在您的 info.plist 中包含 UIUserInterfaceStyle。使用 Xcode 8 创建的新项目已经包含此密钥。

    <key>UIUserInterfaceStyle</key>
        <string>Automatic</string>
    

    【讨论】:

    • 我试过这个编码'didFinishLaunchingWithOptions',但它总是显示'未指定'。
    • @Anas 检查可能为时过早。尝试将其移至您的第一个 VC 的viewDidLoad。确保您的 info.plist 中也包含密钥。
    • @AlizainPrasla 我敢肯定,如果不使用私有 API 作为系统范围的设置,这是不可能的。
    • 可爱。 UIUserInterfaceStyle 是 Kingfisher 演示的 info.plist 文件中缺少的内容。我刚刚添加了它(并将 info.plist 目标分配给 tvOS 应用程序),现在它以暗模式启动。
    【解决方案2】:
    if traitCollection.userInterfaceStyle == .dark {
    }
    

    【讨论】:

      【解决方案3】:

      我在 Swift 5 中编写了这个扩展:

      extension UIViewController {
          var isDarkModeEnabled : Bool {
              get {
                  return traitCollection.userInterfaceStyle == .dark
              }
          }
      }
      

      然后你可以在你的 UIViewControllers 中调用它:

      if self.isDarkModeEnabled {
          //Do something dark
      } else {
          //Do something light
      }
      

      【讨论】:

        猜你喜欢
        • 2019-10-19
        • 1970-01-01
        • 2021-08-18
        • 1970-01-01
        • 2022-01-23
        • 2019-02-09
        • 2017-12-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多