ダークモードをサポートしています。一部のビュー コントローラーでは、traitCollectionDidChange(_)
ユーザー インターフェイス スタイルの変更を処理するために使用しています。
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if #available(iOS 13.0, *) {
if let p = previousTraitCollection {
print("TRAIT COLLECTION \(p.userInterfaceStyle.desc) -> \(traitCollection.userInterfaceStyle.desc). \(UIApplication.shared.applicationState.desc); \(p.hasDifferentColorAppearance(comparedTo: traitCollection) ? "TRAIT CHANGED" : "TRAIT SAME")")
}
}
}
ホームボタンを押してバックグラウンドに移動すると、このメソッドが 2 回起動します。
TRAIT COLLECTION DARK -> LIGHT. BACKGROUND; TRAIT CHANGED
TRAIT COLLECTION LIGHT -> DARK. BACKGROUND; TRAIT CHANGED
そして、iOS 設定で外観を変更してフォアグラウンドに戻すと、
TRAIT COLLECTION DARK -> LIGHT. INACTIVE; TRAIT CHANGED
変。バックグラウンドに移行するたびに、ユーザー インターフェイスのスタイルが前後に変更されます。なんで?