問題タブ [uitraitcollection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
430 参照

ios - UITraitCollection の hasDifferentColorAppearance(comparedTo:) 結果の評価

私のアプリでは、iOS システムのダーク モード設定が変更されたときに、カスタム UI を変更する必要があります。https://developer.apple.com/videos/play/wwdc2019/214/によるとtraitCollectionDidChange、 を使用して以前と現在の特性コレクションを実装して比較することが明示的に言及されていhasDifferentColorAppearance(comparedTo:)ます。

ドキュメントには次のように記載されています。

このメソッドを使用して、現在の環境の特性を変更するとインターフェイスの色も変更されるかどうかを判断します。たとえば、userInterfaceStyle または accessibilityContrast プロパティを変更すると、通常、インターフェイスの色が変更されます。

実装したView Controllerのサブクラスで

しかし、場合によっては、 ifも を返すとは予想していなかった とisSameUserInterfaceStyleの両方がisSameAcessibilityContrast評価されます。私は Apple が提案する API の使用法を回避するのは好きではありませんが、UIが実際に変更されていない場合は不要な変更を加えたくありません。したがって、結果に頼るべきか、それとも両方の特性コレクションを比較するだけで十分かはわかりません。truehasDifferentColorAppearance(comparedTo:)trueuserInterfaceStylehasDifferentColorAppearance(comparedTo:)userInterfaceStyle

0 投票する
3 に答える
8350 参照

swiftui - iOS 13 で Light\Dark モードの変更を検出する方法は?

一部の UI セットアップは、ダーク/ライト モードの変更で自動的に機能しませんUIColor。たとえばshadowレイヤーで。ダークモードとライトモードでシャドウを削除してドロップする必要があるため、updateShadowIfNeeded()機能を配置する場所が必要です。現在のモードを検出する方法を知っています:

layoutSubviews外観が変わるたびに呼び出されるため、関数を の中に入れました。

しかし、この関数はA LOTと呼ばれています。userInterfaceStyle変更された場合にのみトリガーする適切な機能は何ですか?

0 投票する
2 に答える
692 参照

uicolor - iOS13: アセット カタログで昇格したユーザー インターフェイス レベルの色を指定する方法

iOS 13 は、 またはUIUserInterfaceLevelのいずれ.baseかになります.elevatedUIViewシステムは、ダーク モードで高いレベルが使用されたときに提供される色を自動的に調整するようです。

しかし、アセット カタログ.elevatedで手動で色を指定する方法はないようです。

それを行う唯一の方法は、新しい UIColor コンストラクターを使用することです。