代码之家  ›  专栏  ›  技术社区  ›  William Hu

如何判断uilabel的颜色?

  •  1
  • William Hu  · 技术社区  · 15 年前
    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 回复  |  直到 11 年前
        1
  •  4
  •   kennytm    15 年前

    uicolor类集群实现 -isEqual: ,所以你可以用

    if([templabel.backgroundColor isEqual:[UIColor greenColor]])
      ...
    
        2
  •  1
  •   Brian King    15 年前

    您正在那里执行指针比较,因此如果颜色都是绿色,但uicolor的实例不同,则此操作将失败。这是因为uiview的backgroundcolor属性是copy属性。

    @property(nonatomic, copy) UIColor *backgroundColor
    

    我有点惊讶这有点复杂,但要检查是否相等,请尝试以下操作:

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

    这是检查颜色值的相等性,而不仅仅是指针比较。也要记住 [str compare:otherString] == NSOrderSame 检查字符串时!