Présentation
La couleur d'arrière-plan de mon application iPhone dans le simulateur (iMac) est différente de la couleur sur l'appareil (iPhone 3GS).
MODIFIER (la section suivante a été ajoutée)
Les éléments suivants sont tous différents:
Je suppose que je devrais suivre son apparence sur l'appareil.
Questions
Nous remercions @jtbandes d'avoir suggéré d'envoyer des captures d'écran qui ont conduit à la solution.
Je réponds simplement à la question pour être complet.
étapes que j'ai suivies:
Mon décalage RVB (ne pas suivre aveuglément)
basé sur mon expérience, j'ai ajouté les valeurs RVB suivantes pour obtenir la couleur que je voulais, c'est seulement rugueux et a fonctionné pour moi:
Différents angles (préférable de le garder horizontal)
Tenir le téléphone sous différents angles donne également différentes nuances, le garder horizontal a donné la couleur
Comme d'autres l'ont souligné, il s'agit d'un problème de Espaces de couleur .
Deux tâches doivent être effectuées:
Tâche 1
Vous pouvez utiliser le Digital Color Meter
app pour échantillonner la couleur requise, à l'aide de Display in sRGB
option, mais la sortie est très limitée.
Une autre option consiste à utiliser une application comme SipIt
(disponible gratuitement sur l'App Store, la dernière fois que j'ai vérifié). Assurez-vous que vous échantillonnez dans l'espace colorimétrique correct en effectuant:
Preferences -> General -> Color Profiles -> sRGB
Vous pouvez également définir votre format de sortie (par exemple, une chaîne hexadécimale).
Dans Interface Builder, ouvrez la fenêtre Couleur, choisissez le deuxième volet, choisissez "curseurs RVB". Cliquez ensuite sur l'icône en forme de rouage pour choisir le profil de couleur sRGB.
Une fois cela fait, collez votre valeur de couleur dans le Hex Color #
champ
Vous avez terminé! Vos couleurs devraient maintenant correspondre.
Je ne suis d'aucune façon affilié à SipIt. Mais je l'utilise depuis quelques années et c'est très pratique. Je le recommanderais à n'importe quel designer.
La référence CGColorSpace actuelle (au 17/03/14) inclut le texte suivant, qui indique que sRGB est l'espace colorimétrique du périphérique natif pour iOS.
Espaces colorimétriques et iOS: iOS ne prend pas en charge ColorSync, tous les éléments doivent donc être fournis dans l'espace colorimétrique de l'appareil natif: sRGB.
Il s'agit des espaces colorimétriques .
Assurez-vous de choisir la couleur dans un espace sRGB
color et de répliquer ses valeurs RGBA sur Interface Builder en sélectionnant sRGB IEC61966-2.1
Dans le menu déroulant.
Si vous choisissez une couleur dans un espace colorimétrique et que vous la générez dans un espace colorimétrique différent, elle sera différente, bien qu'elle ait répliqué les mêmes valeurs RGBA.
Gardez également à l'esprit que lorsque vous générez une couleur via du code, à l'aide de UIColor(red:green:blue:alpha:)
, elle est générée par défaut dans l'espace colorimétrique sRGB
. C'est pourquoi il est si pratique d'utiliser celui-ci (au lieu de Adobe RGB
, P3
, Ou tout autre). De plus, sRGB
est la norme la plus utilisée actuellement dans l'industrie.
Fait amusant: ce constructeur UIColor
que j'ai mentionné ci-dessus crée des couleurs dans l'espace sRGB
depuis Xcode8. Auparavant, cette fonction était utilisée pour les créer dans l'espace Generic RGB
. C'est pourquoi cela pourrait aussi créer des confusions.
Voici une ressource qui s'étend sur le sujet: https://medium.com/@volbap/working-efficiently-with-colors-in-xcode-bc4c58b16f9a
Une solution plus simple lorsque vous travaillez avec des fichiers image dans votre application. Tout d'abord, définissez votre espace colorimétrique dans Xcode sur sRGB IEC61966-2.1 et appliquez vos couleurs. Ensuite, avant d'importer des images dans votre application, faites correspondre vos images au profil sRGB IEC61966-2.1 à l'aide de ColorSync Utility sur Mac. A parfaitement fonctionné pour moi et mon arrière-plan correspond maintenant parfaitement à mes images importées. J'espère que cela aide quelqu'un.
l'iPhone utilise la gestion de l'espace colorimétrique, donc si vous voulez une solution plus "scientifique", vous pouvez créer votre propre espace colorimétrique par exemple avec CGColorSpaceCreateCalibratedRGB
. C'est au niveau graphique Core cependant.
La meilleure façon de convertir les valeurs RVB en sRGB est d'utiliser l'outil "Digital Color Meter" dans mac, il suffit de cocher la case "Afficher en sRGB"
puis utilisez les valeurs sRGB dans votre code au lieu de RGB
en utilisant cet outil, vous pouvez découvrir la couleur RVB générique et la définir directement sur xcode comme valeurs RVB
Vous pouvez utiliser ceci webPage pour différents jeux de couleurs dans Xcode. par exemple, les couleurs génériques et de l'appareil sont légèrement différentes.
J'ai eu un problème similaire, en particulier avec les verts dans mon projet. Mon problème s'est avéré être que certains des actifs que j'avais avaient été créés dans l'illustrateur et que la couleur était définie sur CMJN au lieu de RVB. Je ne sais pas si c'était votre problème ou non, mais cela pourrait être utile pour ceux qui tomberont sur cette question à l'avenir. J'ai changé l'illustrateur "Mode couleur du document" en RVB et tout va bien.