如何访问UIColor的颜色组件?

时间:2010-04-22 13:06:27

标签: iphone

即。我想知道蓝色的价值。我如何从UIColor获得它?

3 个答案:

答案 0 :(得分:6)

UIColor类不提供有关颜色组件的信息。您必须从其CGColor获取组件。请注意,组件数量取决于CGColorRef中使用的颜色空间。

此代码打印蓝色组件:

UIColor* color = [UIColor blueColor];
int n = CGColorGetNumberOfComponents(color.CGColor);
const CGFloat *coms = CGColorGetComponents(color.CGColor);
for (int i = 0; i < n; ++i)
    NSLog(@"%f", coms[i]);

答案 1 :(得分:0)

我今天早上刚刚提到了这个问题。我不知道为什么UIColor与NSColor相比是如此不完整。无论如何,我发现了UIColor这个有用的类别:Accessing UIColor Components

答案 2 :(得分:0)

刚刚为此做了一个分类。

NSLog(@"%f", [UIColor blueColor].blue); // 1.000000

类似于:

typedef enum { R, G, B, A } UIColorComponentIndices;

@implementation UIColor (EPPZKit)

-(CGFloat)red
{ return CGColorGetComponents(self.CGColor)[R]; }

-(CGFloat)green
{ return CGColorGetComponents(self.CGColor)[G]; }

-(CGFloat)blue
{ return CGColorGetComponents(self.CGColor)[B]; }

-(CGFloat)alpha
{ return CGColorGetComponents(self.CGColor)[A]; }

@end

eppz!kit的一部分,其中UIColor goodies更多。