一部の UI セットアップは、ダーク/ライト モードの変更で自動的に機能しませんUIColor
。たとえばshadow
レイヤーで。ダークモードとライトモードでシャドウを削除してドロップする必要があるため、updateShadowIfNeeded()
機能を配置する場所が必要です。現在のモードを検出する方法を知っています:
func dropShadowIfNeeded() {
switch traitCollection.userInterfaceStyle {
case .dark: removeShadow()
case .light: dropShadowIfNotDroppedYet()
default: assertionFailure("Unknown userInterfaceStyle")
}
}
layoutSubviews
外観が変わるたびに呼び出されるため、関数を の中に入れました。
override func layoutSubviews() {
super.layoutSubviews()
dropShadowIfNeeded()
}
しかし、この関数はA LOTと呼ばれています。userInterfaceStyle
変更された場合にのみトリガーする適切な機能は何ですか?