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");
}
}
我的阵列中有很多标签。他们都用绿色初始化。但我这样判断,为什么不能打印“颜色不是绿色。”
答案 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
!