Je suis assez nouveau à l'objectif c mais je suis programmée depuis un moment. J'ai commencé à créer une fonction qui convertirait de RVB en HSL et à nouveau, mais je me sens un sentiment que c'est beaucoup trop long et je me dirigeai dans la mauvaise direction. Est-ce que quelqu'un connaît un moyen simple d'effectuer cette conversion? P>
4 Réponses :
Vous pouvez utiliser nscolor code>, je pense.
CGFloat r, g, b, a, h, s, b, a2;
NSColor *c = [NSColor colorWithCalibratedRed:r green:g blue:b alpha:a];
[c getHue:&h saturation:&s brightness:&b alpha:&a2];
+1, bien que HSL ne soit pas tout à fait identique à la HSB / HSV. Le H et S devrait être le même, cependant.
@Wevah, Wikipedia dit que ce n'est pas très normalisé et que l'un des noms peut aller avec n'importe quel modèle. Je ne suis pas assez d'un expert pour connaître les subtilités.
Eh bien, ils sont trier i> de standard. Presque. La plupart du temps, il est tout simplement regrettable que les trucs intégrés ne gèrent pas HSL (ergitness). : / S'il veut vraiment que HSV / HSB, votre réponse est parfaite!
Il y a bien un uicolor! (J'ai raté la balise code> iPhone iPhone>.)
Merci Carl, j'ai essayé d'utiliser Uicolor qui m'a un peu plus proche, mais j'obtiens l'erreur que Uicolor ne répond pas à -Géthue: saturation: luminosité: alpha '
La teinte est la seule valeur similaire dans HSB et HSL. Les S (saturation) ne sont pas calculés de la même manière.
-Gethue: Saturation: luminosité: alpha est de Disponible à partir de iOS5
Vous pouvez ajouter la catégorie uicolor-hsvaddition.h / .m à votre application pour ajouter un ensemble d'opérations à Uicolor pour travailler avec la teinte, la saturation et la valeur. Voir http://bravobug.com/news/?p=448 et cette Arstechnica article également. p>
NSCOLOR est manquant dans iPhone SDK. Vous pouvez utiliser cet utilitaire pour convertir de RVB en espace HSL et à l'arrière: p>
Voici ce que j'utilise: et voici comment l'appeler: p>
Merci! Fonctionne beaucoup plus rapidement que d'utiliser nscolor code>.
Mise à jour: Cette fonction renvoie réellement des valeurs de teinte différentes que je ne le pense. Lorsque je l'utilise pour sélectionner différentes gammes de teinte à partir d'une roue de couleur, elle saute autour. En revanche, la solution suivante tourne autour de la roue de couleur comme prévu: Stackoverflow.com/a/6930407/1976584