CGColorGetComponents ( UIColor获取RGB值 用于颜色过渡) (一)

原创 2016年08月29日 14:28:29
方法一:CGFloat*colors= CGColorGetComponents(hsbaColor.CGColor)
如:
UIColor *color = [UIColor colorWithRed:0.0 green:0.0 blue:1.0alpha:1.0];
const CGFloat *components =CGColorGetComponents(color.CGColor);
NSLog(@"Red: %f", components[0]);
NSLog(@"Green: %f", components[1]); 
NSLog(@"Blue: %f", components[2]);

CGColorGetComponents方法返回的是一个数组,存储的是R\G\B\ALPHA四个值,关于 CGColorGetComponents请看APPLE文档的描述.
CGColorGetComponents
Returns the values of the color components (including alpha)associated with a Quartz color.

const CGFloat * CGColorGetComponents (
   CGColorRef color
);
Parameters
color
A Quartz color.
Return Value
An array of intensity values for the color components(including alpha) associated with the specified color. The size ofthe array is one more than the number of components of the colorspace for the color.


但是,此方法只适用于RGB颜色空间,UIColor *color =[UIColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:1.0];
如果是非RGB颜色空间 [UIColorgrayColor]就不能用这个方法了!

方法二:

Google了一下,找到一个方法,记录备忘。自己亲身试过可行!

 

1
2
3
4
5
6
7
8
9
10
11
12
13
CGFloat R, G, B;
 
UIColor *uiColor = [lblDate textColor];
CGColorRef color = [uiColor CGColor];
int numComponents = CGColorGetNumberOfComponents(color);
 
if (numComponents == 4)
{
        const CGFloat *components = CGColorGetComponents(color);
         R = components[0];
         G = components[1];
         B = components[2];
}


方法三:

在stackoverflow找到的,未试过,应该没什么问题

  附上原文地址:http://stackoverflow.com/questions/4700168/get-rgb-value-from-uicolor-presets



5downvoteaccepted

The only way I know of for doing this is to create a Core Graphicsbitmap context in an RGB color space and draw into it with yourcolor. You can then read out the RGB values from the resultingbitmap. Note that this won't work for certain colors, like patterncolors (eg. [UIColor groupTableViewBackgroundColor]), which don'thave reasonable RGB values.

- (void)getRGBComponents:(CGFloat [3])components forColor:(UIColor *)color {

    CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB();

    unsigned char resultingPixel[4];

    CGContextRef context = CGBitmapContextCreate(&resultingPixel,

                                                 1,

                                                 1,

                                                 8,

                                                 4,

                                                 rgbColorSpace,

                                                 kCGImageAlphaNoneSkipLast);

    CGContextSetFillColorWithColor(context, [color CGColor]);

    CGContextFillRect(context, CGRectMake(0, 0, 1, 1));

    CGContextRelease(context);

    CGColorSpaceRelease(rgbColorSpace);



    for (int component = 0; component < 3; component++) {

        components[component] = resultingPixel[component] / 255.0f;

    }
}

You can use it something like this:

    CGFloat components[3];

    [self getRGBComponents:components forColor:[UIColor grayColor]];

    NSLog(@"%f %f %f", components[0], components[1], components[2]);


[iOS][UIColor *] 常用色彩的RGB值

R G B 值 R G B 值 R G B 值 黑色 ...
  • u014057964
  • u014057964
  • 2014年05月09日 09:55
  • 969

UIColor的RGB定义颜色(灰色)

原文链接:http://www.isaced.com/post-140.html 做界面的时候常常会用到UIColor这个类,这是苹果的一个表示颜色的类。 想要表示...
  • Ronaldo_Carry
  • Ronaldo_Carry
  • 2015年10月29日 00:12
  • 281

如何获得RGB的各个颜色值

如何获得RGB的各个颜色值
  • aliealie
  • aliealie
  • 2017年04月10日 11:57
  • 915

将UIColor转换为RGB值

//将UIColor转换为RGB值 - (NSMutableArray *) changeUIColorToRGB:(UIColor *)color { NSMutableArray *RGB...
  • thanklife
  • thanklife
  • 2014年05月14日 11:27
  • 8422

利用windows 系统的画图工具获取图片上某一点的颜色RGB值

今天编写程序时,想模仿一款软件。包括外观颜色都要求很像,但是总是找不到一个与之相似的颜色,后来就想到了可以先获取RGB三色值,然后直接给控件或者窗体的背景赋值。再网上找到很多获取RGB值得工具,但是都...
  • zhangyubishoulin
  • zhangyubishoulin
  • 2015年04月03日 16:28
  • 13877

如何获得RGB的各个颜色值

如何获得RGB的各个颜色值
  • aliealie
  • aliealie
  • 2017年04月10日 11:57
  • 915

iOS色彩空间——xib和代码设置颜色的偏差问题

通过Xib设置样式如下: 通过代码设置如下: NSInteger hexValue = 0x1ba9ba; self.testView.backgroundColor = [UIColor ...
  • u011344883
  • u011344883
  • 2016年01月22日 14:54
  • 4264

Swift3.0对UIColor进行方法扩展

Swift 3.0 XCode 8.0 总是感觉IOS里面颜色的调用好麻烦,每次都要转成10进制,稍微封装一下。后面用起来方便多了/// 获取颜色的方法 extension UIColor { ...
  • sbt0198
  • sbt0198
  • 2017年03月11日 13:03
  • 1489

Swift 的UIColor 类的详解使用和十六进制转RGB

生活处处充满色彩,当然,作为一个App -IOS 的开发者,在你手上产出的App 也应该具有一定的特色。和绚丽的色彩。那么就要考虑到颜色的创建类  UIColor 。今天我就带你走进  Swift  ...
  • zhoushuangjian511
  • zhoushuangjian511
  • 2015年11月27日 13:18
  • 4590

使用 Java 进行图像处理 - 取得图像上指定位置像素的 rgb 颜色分量

版权声明:转载时请务必保留以下作者信息和链接 作者:陈维(chenweionline@hotmail.com)作者的网站:http://www.chenwei.mobi       /** ...
  • songyimin1208
  • songyimin1208
  • 2016年05月18日 09:08
  • 1011
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CGColorGetComponents ( UIColor获取RGB值 用于颜色过渡) (一)
举报原因:
原因补充:

(最多只允许输入30个字)