如何判断UILabel的颜色?

时间:2010-04-22 09:29:21

标签: objective-c cocoa-touch uikit core-graphics

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 个答案:

答案 0 :(得分:4)

UIColor类集群实现-isEqual:,因此您可以使用

if([templabel.backgroundColor isEqual:[UIColor greenColor]])
  ...

答案 1 :(得分:1)

你正在那里进行指针比较,所以如果颜色都是绿色,但不同的UIColor实例,这将失败。它们是因为UIView的backgroundColor属性是一个复制属性。

@property(nonatomic, copy) UIColor *backgroundColor

我有点惊讶这是令人费解的,但为了检查平等,请尝试以下方法:

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

这是检查颜色值的相等性,而不仅仅是指针比较。还记得在检查字符串时执行[str compare:otherString] == NSOrderSame