Programmatically detect dark mode in SwiftUI to display appropriate Image Programmatically detect dark mode in SwiftUI to display appropriate Image ios ios

Programmatically detect dark mode in SwiftUI to display appropriate Image


You can use @Environment(\.colorScheme) var colorScheme: ColorScheme in any view to get whether the device is in dark mode (.dark) or light mode (.light). Using that information, you can conditionally decide which image to show easily with a ternary operator.

For example, if you have an image named "lightImage" for light mode and "darkImage" for dark mode:

@Environment(\.colorScheme) var colorScheme: ColorSchemevar body: some View {    Button(action: {        foo()    }) {        Image(colorScheme == .light ? "lightImage" : "darkImage")    }}


There's an @Environment variable.

@Environment (\.colorScheme) var colorScheme:ColorScheme

Here's how I use it to fill an empty Rectangle:

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