Не удается сравнить цвет текста в UILabel с UIColor - PullRequest
5 голосов
/ 03 декабря 2009

Я пытаюсь сравнить цвет текста в 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);

1 Ответ

11 голосов
/ 03 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...