11

一部の 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変更された場合にのみトリガーする適切な機能は何ですか?

4

3 に答える 3