任意のビューまたはViewControllerのTraitCollectionを使用してuserInterfaceStyleを取得できます。ダークまたはライト。しかし、アプリにダークモードまたはライトモードを使用するように強制した場合、アプリに関係なく、iOSデバイスの現在のuserInterfaceStyleが何であるかを知りたいですか?
UIScreenのTraitcollectionを試しましたが、それでもデバイスではなくアプリのuserInterfaceStyleを提供します。
複数の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.
}
}