[SwiftUI] Petite subtilité avec les couleurs

Je viens de me creuser la tête sur un bug de couleurs, qui n'en était pas un.

C'est bête comme chou, mais

let couleur1 = Color.yellow
let couleur2 = Color(.yellow)

ne donnent pas la même couleur. Petit exemple visuel :

Color(.yellow) est le jaune prédéfini de la palette UIKit. Pas follement joli ..

Color.yellow est une couleur de SwiftUI.

Comme on peut le voir sur l'image, les couleurs prédéfinies d'UIKit sont brutes de décoffrage, juste les couleurs primaire de base. La nouvelle palette de SwiftUI est plus agréable à l'oeil, plus visible.

Le panneau en fond bleu avec la couleur UIKit est difficile à lire, alors que le nouveau bleu est nettement plus esthétique.

En tapant un peu vite, en prenant ce que donne le système de complexion, on peut se tromper de syntaxe et donc de couleurs.

Réponses

  • RenaudRenaud Membre
    mai 2020 modifié #2

    Précision toujours utile ;)

    Pour compléter: les couleurs SwiftUI s'adaptent aussi légèrement en fonction du mode clair/sombre. Voici un exemple avec les différentes combinaisons.

    L'image ci-dessus est générée à partir du code suivant.

        VStack(alignment: .center) {
            Text("Dark Mode / Color.yellow")
                .foregroundColor(Color.yellow)
                .environment(\.colorScheme, .dark)
    
            Text("Dark Mode / Color(.yellow)")
                .foregroundColor(Color(.yellow))
                .environment(\.colorScheme, .dark)
    
            Text("Light Mode / Color.yellow")
                .foregroundColor(Color.yellow)
                .environment(\.colorScheme, .light)
    
            Text("Light Mode / Color(.yellow)")
                .foregroundColor(Color(.yellow))
                .environment(\.colorScheme, .light)
        }
    
  • muqaddarmuqaddar Administrateur

    Merci pour cette mise en lumière des couleurs avec SwiftUI.

  • DrakenDraken Membre
    mai 2020 modifié #4

    @muqaddar a dit :
    Merci pour cette mise en lumière des couleurs avec SwiftUI.

    • braque la lumière dans les yeux de muqaddar * Avoue que tu as posté juste faire un jeu de mot !
  • PyrohPyroh Membre

    Juste pour clarifier Color.<color> est équivalent à UIColor.system<Color>

  • muqaddarmuqaddar Administrateur

    @Draken a dit :

    @muqaddar a dit :
    Merci pour cette mise en lumière des couleurs avec SwiftUI.

    • braque la lumière dans les yeux de muqaddar * Avoue que tu as posté juste faire un jeu de mot !

    On pouvait faire d'une pierre deux coups.

Connectez-vous ou Inscrivez-vous pour répondre.