在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,791評論 2 10
  • //下面代碼放在UIImageVIew類的.m下,實現第一個方法即可。 //傳入一個坐標點,返回相應的顏色 - (...
    小地閱讀 2,032評論 0 2
  • 轉載請帶上出處, 謝謝. 一個 Graphics Context 代表一個繪制目標, 它包含繪制系統用于完成繪制指...
    Falme丶閱讀 1,819評論 0 2
  • 今天無意間看了某個公眾號里提到緯度這個概念,緯度聽起來很抽象但又立體,認為我們很容易想象三維的物體,因為人自身就是...
    Seadreamblue閱讀 738評論 0 1
  • 在單位里經常聽到的抱怨的聲音,新老師抱怨老教師欺人太甚,把能推脫的事都讓他們干;老教師抱怨校長偏袒新老師;班主任抱...
    OQ熊閱讀 325評論 2 0