J'essaie de déterminer si deux couleurs sont équivalentes, en utilisant le code écrit dans l'objectif-c.
J'utilise cet extrait de code pour déterminer si les deux couleurs sont équivalentes (actuellement à des fins de débogage) p> ma console montre p> Je peux poster plus de code si demandé (je ne sais plus si tout est vraiment nécessaire). La couleur actuelle a été initialement définie comme p> si c'est une aide. P> Je suis assez sûr que je fais tout simplement le problème, et ça Il y a probablement une méthode intégrée pouvant comparer les couleurs que je ne suis tout simplement pas au courant. P> p>
3 Réponses :
Les objets doivent être comparés à l'aide de la méthode iSequal: code>, pas
== code>, qui compare simplement l'adresse du pointeur p>
JE VOUS REMERCIE! Je viens de modifier mon code un peu pour comparer les sorties de chaîne par opposition aux couleurs elles-mêmes, en utilisant ISequal en cours de route. Fonctionne magnifiquement maintenant. Merci!
Vous testez des pointeurs d'objet pour l'équivalence, ce qui ne reviendra probablement jamais de retourner vrai. Si vous souhaitez travailler avec les valeurs de couleur réelles, vous devez obtenir la référence CGColor sous-jacente. p>
@implementation UIColor (compare) - (BOOL) isEqualToColor:(UIColor *) otherColor { return CGColorEqualToColor(self.CGColor, otherColor.CGColor); } @end Keep in mind that two colors that look the same may or may not return TRUE, since the components are kept as floats and they may differ by a value that's less than the display hardware can resolve.Also keep in mind that if they're defined in different color spaces, this method will never return TRUE.
Je viens d'avoir une situation où deux Uicolors avaient les mêmes composantes de valeur et que cgcolorequaltocolor est retourné non égal pendant que [Uicolor Isequal:] travaille, y a-t-il quelque chose qui me manque?
La question devrait être reformulée à «comparer les objets dans l'objectif-c» car il s'avère que cela n'a rien à voir avec les couleurs.