我在比較UIColors時遇到問題。我有一個圖像,我已經成功地提取用戶點擊圖像上的顏色。現在我想將這種顏色與其他顏色進行比較,但我得到了一些奇怪的結果。以下是我已經試過:比較UIColors或CGColor或CGColorSpace
CGColorRef pixelColor = [[buttonImage colorAtPixel:point] CGColor];
UIColor* color = [UIColor colorWithCGColor:pixelColor];
UIColor* aqua = [UIColor colorWithRed:0.521569 green:0.768627 blue:0.254902 alpha:1];
if (CGColorEqualToColor(color.CGColor, aqua.CGColor)) {
DLog(@"Apparently, it works");
}
DLog(@"%@", color.CGColor);
DLog(@"%@", aqua.CGColor);
輸出:
2011-05-21 19:48:27.144 Coffee[66860:207] -[DescriptorsViewController touchesEnded:withEvent:] <CGColor 0x4d1eb80> [<CGColorSpace 0x4d1a070> (kCGColorSpaceDeviceRGB)] (0.521569 0.768627 0.254902 1)
2011-05-21 19:48:27.145 Coffee[66860:207] -[DescriptorsViewController touchesEnded:withEvent:] <CGColor 0x4d1f750> [<CGColorSpace 0x4d1a070> (kCGColorSpaceDeviceRGB)] (0.521569 0.768627 0.254902 1)
它看起來像CGColor地址不同,但CGColorSpaces是相同的,但我無法弄清楚如何比較CGColorSpaces
我也試過這樣:
CGColorRef pixelColor = [[buttonImage colorAtPixel:point] CGColor];
UIColor* color = [UIColor colorWithCGColor:pixelColor];
UIColor* aqua = [UIColor colorWithRed:0.521569 green:0.768627 blue:0.254902 alpha:1];
if ([color isEqual:aqua]) {
DLog(@"Apparently, it works");
}
DLog(@"%@", color.CGColor);
DLog(@"%@", aqua.CGColor);
發生同樣的愚蠢。
2011-05-21 20:02:49.277 Coffee[67013:207] -[DescriptorsViewController touchesEnded:withEvent:] <CGColor 0x4d3b810> [<CGColorSpace 0x5912010> (kCGColorSpaceDeviceRGB)] (0.521569 0.768627 0.254902 1)
2011-05-21 20:02:49.278 Coffee[67013:207] -[DescriptorsViewController touchesEnded:withEvent:] <CGColor 0x4d3ba20> [<CGColorSpace 0x5912010> (kCGColorSpaceDeviceRGB)] (0.521569 0.768627 0.254902 1)`
就是這樣!謝謝...... – StefMa 2014-12-15 09:20:06
不幸的是,CGColorEqualToColor不起作用,如原始問題所示。我目前有這個相同的問題。奇怪的是,它可以在iPhone 5及更低版本(模擬器和設備測試)上工作,但不適用於5s及以上(僅測試模擬器)。 – Dylan 2015-04-15 18:39:22