我正在使用下面的代码行,但它似乎没有做我期望的事情,即确定按钮标题的标题文本颜色是否为绿色。但是,我没有收到编译错误,所以它必须做一些事情:
if ([sfield1 currentTitleColor] != [UIColor greenColor])
有人知道是否有办法进行这种比较?谢谢。
您可以尝试使用 -
isEqual:
但是在使用时需要小心,如果颜色模型有差异,那么它可能会失败。
试试这个它可能会工作。,.,.
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.,.");
}
我在学习,。,。,,。
让这两种颜色穿过它们:
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 不起作用的原因。
使用 isEqual 方法:
if ([[sfield1 currentTitleColor] isEqual: [UIColor greenColor]])
现在你只是在相等内存地址,它们显然不相等,因为它们不是完全相同的对象。
试试这个[[sfield1 currentTitleColor] isEqual: [UIColor greenColor]];
[[yourfeild currentTitleColor] isEqual:[UIColor yourcurrentcolor]];
您只是在等于内存地址,这些地址显然不相等,因为它们不是完全相同的对象。
在 iOS 5 及更高版本中,UIColor
为 HSL 和 RGB 颜色系统提供了 getter,因此您可以编写一个实用函数来比较两种给定颜色的颜色……</p>
或者,您是否尝试过比较两种颜色的 CIColor 属性?