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

5

我尝试将UIlabel中的文字颜色与UIColor进行比较,但结果始终为false。

以下代码生成了该结果:

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);
1个回答

11

UIColor没有定义isEqual方法,isEqual方法是从NSObject继承而来的。因此,isEqual方法比较的是颜色的地址,会失败。

CGColor有一个比较函数CGColorEqualToColor()

CGColor *c = myColor.CGColor;

然后可以比较CGColor颜色:
bool colorsEqual = CGColorEqualToColor(myColor1.CGColor, myColor2.CGColor);

或者获取两种颜色的各个组成部分,然后使用
- (BOOL)getRed:(CGFloat *)red green:(CGFloat *)green blue:(CGFloat *)blue alpha:(CGFloat *)alpha进行逐个比较。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接