如何获取UIView中像素的颜色

时间:2014-11-06 10:02:27

标签: ios objective-c uiview

色圈可以旋转,当圆圈旋转时,我想得到色圈三角形的颜色,我用的方法是:

- (UIColor *) colorOfPoint:(CGPoint)point
{
unsigned char pixel[4] = {0};

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

CGContextRef context = CGBitmapContextCreate(pixel, 1, 1, 8, 4, colorSpace, kCGBitmapAlphaInfoMask & kCGImageAlphaPremultipliedLast);

CGContextTranslateCTM(context, -point.x, -point.y);

[self.layer renderInContext:context];

CGContextRelease(context);
CGColorSpaceRelease(colorSpace);

//NSLog(@"pixel: %d %d %d %d", pixel[0], pixel[1], pixel[2], pixel[3]);

UIColor *color = [UIColor colorWithRed:pixel[0]/255.0 green:pixel[1]/255.0 blue:pixel[2]/255.0 alpha:pixel[3]/255.0];

return color;
}

但圆圈旋转时没有得到正确的颜色,我所有的代码都在github上: https://github.com/carya/GetViewColor,任何人都可以帮我解决这个问题,非常感谢。

enter image description here

PS:我测试了 - (UIColor *)colorOfPoint:(CGPoint)点法在正常视图中是正确的,但在我的代码中,结果看起来很奇怪。


更新

最后我修复了这个问题并发布了一篇文章来解释这一点,您可以访问this

1 个答案:

答案 0 :(得分:0)

最后我修复了这个问题并发布了一篇文章来解释这一点,您可以访问this