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.
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 UIColor
init(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.
Voir la documentation d'Apple: https://developer.Apple.com/reference/uikit/uicolor/1621925-init
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:
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.
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]);