如何检查是否启用了深色外观 tvOS

How to check if Dark Appearance is enabled tvOS

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

使用 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>

我在 Swift 5:

中写了这个扩展
extension UIViewController {
    var isDarkModeEnabled : Bool {
        get {
            return traitCollection.userInterfaceStyle == .dark
        }
    }
}

然后您可以在 UIViewControllers 中调用它:

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