即。我想知道蓝色的价值。我如何从UIColor获得它?
答案 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更多。