2009-12-03 54 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有一個比較功能CGColorEqualToColor():單獨使用
- (BOOL)getRed:(CGFloat *)red green:(CGFloat *)green blue:(CGFloat *)blue alpha:(CGFloat *)alpha

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

或者得到兩種顏色的各個組件,然後比較:

CGColor *c = myColor.CGColor; 

然後CGColor顏色可以比

+0

謝謝Zaph,這很有道理。 – Joe 2009-12-03 12:05:14