2009-12-03 4 views
5

UIlabel의 텍스트 색상과 UIColor를 비교하려고하지만 결과는 항상 false입니다. 이 비교 할 수있는 또 다른 방법이 있나요UILabel의 텍스트 색상과 UIColor의 비교가 실패했습니다.

color equal 1, 0 

나는 A와 B가 모두 1로 동일하게 기대 :

다음 코드는 결과를 생성?

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); 

답변

11

UIColor는 isEqual을 정의하지 않으며 isEqual은 NSObject에서 상속됩니다. 따라서 isEqual은 색상의 주소를 비교하고 실패합니다. 그런 다음 CGColor 색은 비교 될 수

CGColor *c = myColor.CGColor; 

:

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

또는 두 가지 색상의 개별 구성 요소를 가져온 다음 비교 개별적으로
- (BOOL)getRed:(CGFloat *)red green:(CGFloat *)green blue:(CGFloat *)blue alpha:(CGFloat *)alpha를 사용

CGColor는 비교 함수 CGColorEqualToColor()있다

+0

Zaph에게 감사드립니다. – Joe

관련 문제