UILabel中的文本颜色与UIColor的比较失败

Joe*_*Joe 5 iphone objective-c

我试图将UIlabel中的文本颜色与UIColor进行比较,但结果始终为false.

以下代码生成结果:

color equal 1, 0
Run Code Online (Sandbox Code Playgroud)

我希望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);
Run Code Online (Sandbox Code Playgroud)

zap*_*aph 11

UIColor没有定义isEqual,isEqual是从NSObject继承的.因此isEqual正在比较颜色的地址并将失败.

CGColor有一个比较功能CGColorEqualToColor():

CGColor *c = myColor.CGColor;
Run Code Online (Sandbox Code Playgroud)

然后可以比较CGColor颜色:

bool colorsEqual = CGColorEqualToColor(myColor1.CGColor, myColor2.CGColor);
Run Code Online (Sandbox Code Playgroud)

或者获取两种颜色的各个组件,然后单独比较使用
- (BOOL)getRed:(CGFloat *)red green:(CGFloat *)green blue:(CGFloat *)blue alpha:(CGFloat *)alpha