2009-12-03 10 views
5

Estoy tratando de comparar el color del texto en una UIlabel con un UIColor pero el resultado siempre es falso.La comparación del color del texto en UILabel con UIColor falla

El siguiente código produce el resultado:

color equal 1, 0 

espero que tanto A como B sean iguales a 1. ¿Hay otra manera de hacer esto comparar?

bool a,b; 

    UIColor *myColor1, *myColor2; 

    myColor1 = [UIColor redColor]; 
    mainViewController.timerLabel.textColor = [UIColor redColor]; 

    myColor2 = [UIColor colorWithCGColor:mainViewController.timerLabel.textColor.CGColor]; 


    a = [[UIColor redColor] isEqual:myColor1]; 
    b = [[UIColor redColor] isEqual:myColor2]; 

    NSLog(@"color equal %i, %i",a,b); 

Respuesta

11

UIColor no define isEqual, isEqual es heredado de NSObject. Así isEqual está comparando las direcciones de los colores y fallará.

CGColor tiene una función de comparación CGColorEqualToColor():

CGColor *c = myColor.CGColor; 

A continuación, los colores CGColor se pueden comparar:

bool colorsEqual = CGColorEqualToColor(myColor1.CGColor, myColor2.CGColor); 

O conseguir los componentes individuales de los dos colores y compara a continuación de forma individual utilizando
- (BOOL)getRed:(CGFloat *)red green:(CGFloat *)green blue:(CGFloat *)blue alpha:(CGFloat *)alpha

+0

Gracias Zaph, eso tiene sentido. – Joe

Cuestiones relacionadas