I am using this little extension to invert the colors of the icons in my app. The icons are in black and white, and designed first to be used in the .light theme mode, that means they have beed design in black lines, so when the user will switch to dark, the icons should change the lines to white.
struct DetectThemeChange: ViewModifier {
@Environment(\.colorScheme) var colorScheme
func body(content: Content) -> some View {
if(colorScheme == .dark){
content.colorInvert()
}else{
content
}
}
}
extension View {
func invertOnDarkTheme() -> some View {
modifier(DetectThemeChange())
}
}
//usage example
Image("iconName").resizable().scaledToFit().frame(height: 40).invertOnDarkTheme()
That’s it, now let’s get back to WWDC2022 which will start in a couple of hours.