Tôi gặp sự cố khi so sánh UIColors. Tôi có một hình ảnh, mà tôi đã trích xuất thành công màu sắc trên hình ảnh mà người dùng đã nhấp vào. Bây giờ tôi muốn so sánh màu đó với các màu khác, nhưng tôi nhận được một số kết quả lạ. Đây là những gì tôi đã cố gắng:So sánh UIColors hoặc CGColor hoặc 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);
Output:
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)
Dường như các địa chỉ CGColor là khác nhau, nhưng CGColorSpaces đều giống nhau, nhưng tôi không thể tìm ra cách để so sánh CGColorSpaces
tôi cũng đã thử điều này:
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);
Các dại tương tự xảy ra.
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)`
Vậy đó! Cảm ơn bạn ... – StefMa
Thật không may CGColorEqualToColor KHÔNG hoạt động, như được hiển thị trong câu hỏi gốc. Tôi hiện đang gặp vấn đề tương tự. Điều kỳ lạ là nó làm việc trên iPhone 5 trở xuống (giả lập và thử nghiệm thiết bị), nhưng không phải trên 5s & up (giả lập chỉ được thử nghiệm). – Dylan