0

我正在使用下面的代码行,但它似乎没有做我期望的事情,即确定按钮标题的标题文本颜色是否为绿色。但是,我没有收到编译错误,所以它必须做一些事情:

if ([sfield1 currentTitleColor] != [UIColor greenColor])

有人知道是否有办法进行这种比较?谢谢。

4

7 回答 7

2

您可以尝试使用 -

isEqual:

但是在使用时需要小心,如果颜色模型有差异,那么它可能会失败。

于 2012-04-27T05:06:24.530 回答
1

试试这个它可能会工作。,.,.

  but=[[UIButton alloc]init];  
 [but setTitle:@"nice" forState:UIControlStateNormal];
 [but setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
 [but setFrame:CGRectMake(100, 450, 40, 20)];
 [self.view addSubview:but];

 if (but.titleLabel.textColor==[UIColor blueColor]) 
  {
  NSLog(@"nothing., it is very easy.,.");
  }

我在学习,。,。,,。

于 2012-04-27T05:58:54.897 回答
1

让这两种颜色穿过它们:

   UIColor *color = value;
    const CGFloat *components = CGColorGetComponents(color.CGColor);
    NSString *colorAsString = [NSString stringWithFormat:@"%f,%f,%f,%f", components[0], components[1], components[2], components[3]];

然后比较两个字符串?也许有点矫枉过正,但如果以上所有方法都不起作用,这可能是最后的手段。(我强烈建议尝试找出 isEqual 不起作用的原因。

于 2012-04-27T06:12:29.213 回答
0

使用 isEqual 方法:

if ([[sfield1 currentTitleColor] isEqual: [UIColor greenColor]])

现在你只是在相等内存地址,它们显然不相等,因为它们不是完全相同的对象。

于 2012-04-27T05:07:20.093 回答
0

试试这个[[sfield1 currentTitleColor] isEqual: [UIColor greenColor]];

于 2012-04-27T05:08:34.727 回答
0
[[yourfeild currentTitleColor] isEqual:[UIColor yourcurrentcolor]];

您只是在等于内存地址,这些地址显然不相等,因为它们不是完全相同的对象。

于 2012-04-27T05:31:34.543 回答
0

在 iOS 5 及更高版本中,UIColor为 HSL 和 RGB 颜色系统提供了 getter,因此您可以编写一个实用函数来比较两种给定颜色的颜色……</p>

或者,您是否尝试过比较两种颜色的 CIColor 属性?

于 2012-04-27T05:46:16.433 回答