Как судить о цвете UILabel? - PullRequest
1 голос
/ 22 апреля 2010
UILabel *templabel = [self.wallBoxArray objectAtIndex:i];

for( int i = 0 ; i < [self.wallBoxArray count]; i++)
{
  if(templabel.backgroundColor == [UIColor greenColor])
   {
     NSLog(@"the color isn green");  
   }
}

В моем массиве много меток. Все они инициализированы зеленым цветом. Но я так понял, почему не могу напечатать "цвет не зеленый".

Ответы [ 2 ]

4 голосов
/ 29 апреля 2010

Кластер класса UIColor реализует -isEqual:, поэтому вы можете просто использовать

if([templabel.backgroundColor isEqual:[UIColor greenColor]])
  ...
1 голос
/ 28 апреля 2010

Вы выполняете сравнение указателей там, поэтому, если оба цвета - зеленый, но разные экземпляры UIColor, это не удастся. И это потому, что свойство backgroundColor в UIView является свойством копирования.

@property(nonatomic, copy) UIColor *backgroundColor

Я немного удивлен, что это такая запутанная вещь, но для проверки равенства попробуйте следующее:

CGColorEqualToColor([templabel.backgroundColor CGColor], [[UIColor greenColor] CGColor])

Это проверка равенства значения цвета, а не просто сравнение указателя. Также не забудьте сделать [str compare:otherString] == NSOrderSame при проверке строк!

...