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]);


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

UIcolor RGB颜色

R G B 值   R G B 值   R G B 值 黑色 ...

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

R G B 值 R G B 值 R G B 值 黑色 ...

RGB颜色值获取工具

  • 2010-03-12 18:11
  • 40KB
  • 下载

IOS 获取图像指定点的颜色(UIColor)

在 IOS 开发中,有时候需要获取图像中某个像素点的颜色,返回 UIColor 值。网上收集资料,参考各种方案,最后总结如下:- (UIColor *)colorAtPixel:(CGPoint)po...

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

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

RGB颜色值获取小软件

  • 2013-12-16 14:30
  • 127KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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