iphone - 在 Objective-C 中比较颜色

标签 iphone objective-c comparison colors quartz-graphics

我正在尝试使用用 Objective-C 编写的代码来确定两种颜色是否相等。

我正在使用这段代码来确定两种颜色是否相同(目前用于调试目的)

    NSLog(@"currentColor is %@", currentColor);
NSLog(@"Adjacent Color is %@",[[buttonArray objectAtIndex:1] backgroundColor]);
NSLog(@"%i",[[buttonArray objectAtIndex:1] backgroundColor]==currentColor);

我的控制台正在显示

2009-10-20 00:27:10.814 colorGame[13588:207] currentColor is kCGColorSpaceModelRGB 0 0 1 1 
2009-10-20 00:27:10.815 colorGame[13588:207] Adjacent Color is kCGColorSpaceModelRGB 0 0 1 1 
2009-10-20 00:27:10.815 colorGame[13588:207] 0

如果有人问我可以发布更多代码(我不知道是否真的有必要)。当前颜色最初定义为

UIColor *currentColor;

如果有任何帮助。

我很确定我只是做错了比较,而且可能有一些我不知道的内置方法可以比较颜色。

最佳答案

@implementation UIColor (compare)

- (BOOL) isEqualToColor:(UIColor *) otherColor
{
return CGColorEqualToColor(self.CGColor, otherColor.CGColor);
}

@end

请记住,看起来相同的两种颜色可能返回 TRUE,也可能不返回 TRUE,因为组件保持为 float ,它们的差异值可能小于显示硬件可以解析的值。

另请记住,如果它们在不同的颜色空间中定义,则此方法永远不会返回 TRUE。

关于iphone - 在 Objective-C 中比较颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1592995/

相关文章:

iphone - 从 uitableview 崩溃中删除行

iphone - Jquery 移动页面在荷兰 3G 连接上无法正确加载

iphone - 如何在没有 UIimagePickerController 的情况下以编程方式在 iphone 中访问保存图像中的图像?

objective-c - IOS 中的圆形进度条

ios - 使用 UIBezierPath 时出现错误

c++ - 如何比较 int 和 char?

iphone - UITableView 单元格之间的空间

ios - 在 Objective C 中将 Hex NSData 转换为 int

c# - 从时间列表中找到最近的时间

opengl - GLSL 组件方式相等比较