web-dev-qa-db-ja.com

iOSデバイスの現在のuserInterfaceStyleをプログラムで確認するにはどうすればよいですか?

任意のビューまたはViewControllerのTraitCollectionを使用してuserInterfaceStyleを取得できます。ダークまたはライト。しかし、アプリにダークモードまたはライトモードを使用するように強制した場合、アプリに関係なく、iOSデバイスの現在のuserInterfaceStyleが何であるかを知りたいですか?

UIScreenのTraitcollectionを試しましたが、それでもデバイスではなくアプリのuserInterfaceStyleを提供します。

4
Raushan Kumar

複数のViewControllerまたはWindowsがあり、インターフェイススタイルを動的にしたい(またはあなたの場合はロックしたい)場合は、 traitCollectionDidChange(_:) コールバックを使用して、プロパティuserInterfaceStyle。これは、インターフェーススタイルの現在の状態を反映します(ロックされている場合でも)。子View Controllerは親の設定を継承することを覚えておいてください。

このようにして、遷移先の現在のインターフェイススタイルに応じて正しく動作するようにコードを設計できます。以下の例は、カスタムUIViewControllersとカスタムUIViewsで機能します。

例(Swift 4):

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    super.traitCollectionDidChange(previousTraitCollection)
    if self.traitCollection.userInterfaceStyle != previousTraitCollection.userInterfaceStyle {
    // Your custom implementation here that is run right after the userInterfaceStyle has changed.
    }
}
0
Alexander W