在ios app中添加类似mac取色剂功能

最近开展的项目需要添加一个类似mac中的取色剂功能,即点击屏幕上的任意一点之后就能获取到该点颜色,这个使用mac的同志们都不会陌生。

表达有限,图片来凑:

核心代码如下,根据当前的点击位置获取颜色:

//当前点击位置的颜色

- (UIColor *) colorOfPoint:(CGPoint)point

{

unsigned char pixel[4] = {0};

//创建RGB色彩空间

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

/**

*创建上下文

data                指向要渲染的绘制内存的地址。这个内存块的大小至(bytesPerRow*height)个字节

width              bitmap的宽度,单位为像素

height              bitmap的高度,单位为像素

bitsPerComponent    内存中像素的每个组件的位数.例如,对于32位像素格式和RGB 颜色空间,你应该将这个值设为8.

bytesPerRow        bitmap的每一行在内存所占的比特数

colorspace          bitmap上下文使用的颜色空间。

bitmapInfo          指定bitmap是否包含alpha通道,像素中alpha通道的相对位置,像素组件是整形还是浮点型等信息的字符串。

*/

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

//CGContext画图片是反的,需反转

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

//将界面内容渲染至上下文

[self.view.layer renderInContext:context];

//释放上下文及色彩空间

CGContextRelease(context);

CGColorSpaceRelease(colorSpace);

//返回该点的颜色

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

gtihub地址:https://github.com/zhaozhenbo/CGColor_test

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • --绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益...
    韩七夏阅读 2,837评论 2 10
  • //下面代码放在UIImageVIew类的.m下,实现第一个方法即可。 //传入一个坐标点,返回相应的颜色 - (...
    小地阅读 2,063评论 0 2
  • 转载请带上出处, 谢谢. 一个 Graphics Context 代表一个绘制目标, 它包含绘制系统用于完成绘制指...
    Falme丶阅读 1,833评论 0 2
  • 今天无意间看了某个公众号里提到纬度这个概念,纬度听起来很抽象但又立体,认为我们很容易想象三维的物体,因为人自身就是...
    Seadreamblue阅读 777评论 0 1
  • 在单位里经常听到的抱怨的声音,新老师抱怨老教师欺人太甚,把能推脱的事都让他们干;老教师抱怨校长偏袒新老师;班主任抱...
    OQ熊阅读 329评论 2 0