How to check if Dark Appearance is enabled tvOS

2019-05-21 14:17发布

How do I check if a user has enabled Dark Appearance on their Apple TV?

2条回答
冷血范
2楼-- · 2019-05-21 14:28

I wrote this extension in Swift 5:

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

You can then call this in your UIViewControllers:

if self.isDarkModeEnabled {
    //Do something dark
} else {
    //Do something light
}
查看更多
劫难
3楼-- · 2019-05-21 14:39

Using UIUserInterfaceStyle, first available in tvOS 10, we can check what appearance the user has set.

For example:

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")
    }
}

Also, if you're updating from a Xcode 7/tvOS 9.0 project you will need to include UIUserInterfaceStyle in your info.plist. New projects created with Xcode 8 already have this key included.

enter image description here

<key>UIUserInterfaceStyle</key>
    <string>Automatic</string>
查看更多
登录 后发表回答