web-dev-qa-db-fra.com

La couleur dans le storyboard ne correspond pas à UIColor

Je définis une couleur dans le code comme

[UIColor colorWithHue:32.0/360.0 saturation:0.88 brightness:0.97 alpha:1]

Si j'essaie de définir la même couleur dans le storyboard, lors de l'exécution de l'application, c'est une couleur légèrement différente de celle définie dans le code. Si je fais glisser la couleur vers le palais, puis sélectionne une couleur différente et sélectionne à nouveau celle du palais, les valeurs HSB sont légèrement différentes. Il semble qu'il s'aligne sur une couleur différente (RVB?) Dans le générateur d'interface.

55
Nick

Xcode 8+, iOS 10 +

J'ai récemment rencontré ce problème et aucune des réponses publiées ne l'a fait. Il s'avère qu'avec la sortie du SDK iOS 10, l'initialiseur UIColorinit(red:green:blue:alpha:) utilise désormais la plage sRGB étendue, vous devez donc définir en conséquence lors de la configuration de vos valeurs de couleur sur le Storyboard.

enter image description here

Voir la documentation d'Apple: https://developer.Apple.com/reference/uikit/uicolor/1621925-init

193
camilomq

J'ai eu le même problème. Je voyais les valeurs RVB d'exécution des couleurs des storyboards ne correspondant pas aux UIColors créés lors de l'exécution dans le code. J'ai pu résoudre ce problème dans les storyboards en définissant la couleur sur "Generic RGB" (par rapport à la valeur par défaut de sRGB) lors de la configuration. Voici une capture d'écran de ce dont je parle dans IB:

IB Color config util

36
mattr

Swift 3

Dans mon cas, ce qui était exactement précis était LCD couleur:

enter image description here

J'espère avoir aidé :-D

8
Matheus Domingos

Avec le code, UIColor init (rouge: vert: bleu: alpha :) méthode retourne un objet couleur avec un espace colorimétrique sRGB; Avec xib/StoryBoard, nous devons sélectionner "sRGB IEC ..." si nous voulons obtenir la même apparence que l'utilisation du code.

Tel que:

UIColor.init(red: (20.0/255.0), green: (20.0/255.0), blue: (20.0/255.0), alpha: 1.0)

capture d'écran xib/StoryBoard

En fait, ce problème n'a rien à voir avec iOS 10. Après iOS 10, UIColor init utilise "sRGB étendu" au lieu de sRGB. Et cela ne pose des problèmes que lorsque nous utilisons des valeurs de r g b inférieures à 0,0 et supérieures à 1,0.

lié à iOS 10 UIColor

2
Jirui

Semble que c'est un bug. Lors de l'enregistrement de la couleur définie par IB dans le code, elle a les valeurs H: 27,982594 S: 0,899257 B: 0,953253

J'ai déposé un rapport de bogue auprès d'Apple: rdar: // 19744216

Merci à Zaph

Se connecter:

CGFloat cols[4];
[color getHue:&cols[0] saturation:&cols[1] brightness:&cols[2] alpha:&cols[3]];
NSLog(@"H:%f S:%f B:%f %f",cols[0]*360, cols[1], cols[2], cols[3]);
1
Nick