Dans Assets.xcassets
, il est possible d'ajouter des images supplémentaires qui basculeront automatiquement en fonction des apparences. Cela fonctionne bien pour les images statiques, mais j'essaie de comprendre comment le faire pour les images téléchargées.
Existe-t-il un moyen de définir la version en mode sombre d'un Image
sur init ou y a-t-il une fonction dans SwiftUI qui vous permettra de détecter si l'apparence actuelle est sombre afin qu'une URL d'image différente puisse être servie?
Vous pouvez utiliser @Environment(\.colorScheme) var colorScheme: ColorScheme
dans n'importe quelle vue pour savoir si l'appareil est en mode sombre (.dark
) ou en mode lumière (.light
). En utilisant ces informations, vous pouvez conditionnellement décider quelle image afficher facilement avec un opérateur ternaire.
Par exemple, si vous avez une image nommée "lightImage" pour le mode clair et "darkImage" pour le mode sombre:
@Environment(\.colorScheme) var colorScheme: ColorScheme
var body: some View {
Button(action: {
foo()
}) {
Image(colorScheme == .light ? "lightImage" : "darkImage")
}
}
Il y a un @Environment
variable.
@Environment (\.colorScheme) var colorScheme:ColorScheme
Voici comment je l'utilise pour remplir un rectangle vide:
Rectangle().fill(Color.fillColor(for: colorScheme))