web-dev-qa-db-fra.com

iOS - la couleur sur le simulateur Xcode est différente de la couleur sur l'appareil

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:

  1. couleur du tableau de bord (fichier xib)
  2. couleur du simulateur
  3. couleur de l'appareil

Je suppose que je devrais suivre son apparence sur l'appareil.

Questions

  1. Est-ce un problème commun auquel sont confrontés les autres développeurs et existe-t-il un moyen de faire correspondre les couleurs (procédure systématique)?
  2. la couleur sera-t-elle différente sur différentes versions d'iPhone (3gs/4/4s) ou sur toute la couleur?
  3. Suis-je en train de manquer quelque chose, y a-t-il un profil de couleur spécifique à utiliser?
  4. Existe-t-il quelque chose comme une règle empirique où les valeurs RVB varient d'un certain pourcentage?
  5. Dans l'iPhone 4 et 4S, la couleur correspond-elle au simulateur? (Je n'ai pas d'iPhone4 et 4S, donc je ne suis pas sûr.)
39
user1046037

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:

  1. Prendre une capture d'écran de l'image dans le storyboard
  2. Prenez une capture d'écran de l'image dans l'appareil (utilisez le flux de messagerie/photo sur votre Mac)
  3. Utilisez le sélecteur de couleurs (qui fait partie de la palette de couleurs de Mac OS) pour choisir le même endroit sur les deux captures d'écran
  4. Notez les valeurs RVB (disponibles sur la palette de couleurs mac OS) des spots choisis à l'étape 3
  5. comparer les deux valeurs RVB et voir la différence
  6. ajoutez le décalage RVB pour correspondre à la couleur.

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:

  • Rouge +12
  • Vert +19
  • Bleu +16

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

19
user1046037

Comme d'autres l'ont souligné, il s'agit d'un problème de Espaces de couleur .

Deux tâches doivent être effectuées:

  1. Obtenez la couleur source en utilisant l'espace colorimétrique sRGB.
  2. Définissez la couleur dans Interface Builder, en utilisant l'espace colorimétrique sRGB.

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).

enter image description here Tâche 2

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.

enter image description here

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.

9
Womble

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.

8
John

Il s'agit des espaces colorimétriques .

Assurez-vous de choisir la couleur dans un espace sRGBcolor 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

5
Pablo V.

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.

1
Dusan Juranovic

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.

1
MrTJ

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"

Digital Color Meter

puis utilisez les valeurs sRGB dans votre code au lieu de RGB native values

enter image description here

en utilisant cet outil, vous pouvez découvrir la couleur RVB générique et la définir directement sur xcode comme valeurs RVB

1
MohyG

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.

0
S At

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.

0
user3102878