1. ホーム
  2. ios

iOSのダークモードを確認する方法とは?[重複あり]

2023-08-31 03:40:16

質問

  • iOS アプリでダークモードの状態を観察する方法
  • iOS アプリでダークモードの状態の変化に対応する方法

どのように解決するのですか?

UIKit にはしばらく前から UITraitCollection がありました。iOS 9 以降、デバイスが 3D Touch をサポートしているかどうかを確認するために UITraitCollection を使用できました (悲しい話はまた別の日に)。

iOS 12 では では、UITraitCollection に新しいプロパティが追加されました。 var userInterfaceStyle: UIUserInterfaceStyle というプロパティが追加され、3つのケースをサポートするようになりました。 light , dark そして unspecified

UIViewController は UITraitEnvironment を継承しているので、 ViewController の traitCollection . これには userInterfaceStyle .

UITraitEnviroment には、状態が変化したとき(たとえば、ユーザーがダークサイドからライトサイドに切り替わったとき、あるいはその逆)にコードが解釈できるようにするための、気の利いたプロトコルスタブもいくつかあります。ここに素敵なコーディング例があります。

class MyViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if self.traitCollection.userInterfaceStyle == .dark {
            // User Interface is Dark
        } else {
            // User Interface is Light
        }

    }


    override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
        // Trait collection has already changed
    }

    override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
        // Trait collection will change. Use this one so you know what the state is changing to.
    }
}