web-dev-qa-db-ja.com

プログラムでSwiftUIのダークモードを検出して適切な画像を表示する

Assets.xcassets、外観に基づいて自動的に切り替わる画像を追加する機能があります。これは静止画像に適していますが、ダウンロードした画像にこれを行う方法を理解しようとしています。

Image Set

InitにImageのダークモードバージョンを設定する方法はありますか、またはSwiftUIに現在の外観が暗いかどうかを検出して別の画像URLを提供できるようにする関数がありますか?

9
Zain

どのビューでも@Environment(\.colorScheme) var colorScheme: ColorSchemeを使用して、デバイスがダークモードかどうかを取得できます(.dark)またはライトモード(.light)。その情報を使用して、3項演算子で簡単に表示する画像を条件付きで決定できます。

たとえば、ライトモードに「lightImage」、ダークモードに「darkImage」という名前の画像がある場合:

@Environment(\.colorScheme) var colorScheme: ColorScheme

var body: some View {
    Button(action: {
        foo()
    }) {
        Image(colorScheme == .light ? "lightImage" : "darkImage")
    }
}
23
RPatel99

@Environment変数。

@Environment (\.colorScheme) var colorScheme:ColorScheme

これを使用して空の四角形を塗りつぶす方法を次に示します。

Rectangle().fill(Color.fillColor(for: colorScheme))
2
dfd