Assets.xcassets
、外観に基づいて自動的に切り替わる画像を追加する機能があります。これは静止画像に適していますが、ダウンロードした画像にこれを行う方法を理解しようとしています。
InitにImage
のダークモードバージョンを設定する方法はありますか、またはSwiftUIに現在の外観が暗いかどうかを検出して別の画像URLを提供できるようにする関数がありますか?
どのビューでも@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")
}
}
@Environment
変数。
@Environment (\.colorScheme) var colorScheme:ColorScheme
これを使用して空の四角形を塗りつぶす方法を次に示します。
Rectangle().fill(Color.fillColor(for: colorScheme))