CGFloat* colors = CGColorGetComponents(hsbaColor.CGColor);

这不会返回浮动,或阵列的浮筒?它看起来像星号的简写为创造一个阵列。是正确的?

当我把这个叫功能上CGColor财产的HSB UIColor对象它不会把价值为RGB?

有帮助吗?

解决方案

是的,它返回一组 CGFloats.具体而言,返回"一系列的强度值的颜色组成部分(包括甲)与指定的颜色"。

颜色分返回取决于什么颜色空间的传递 CGColorRef 使用。

更多信息,可以发现在 CGColor文件.

其他提示

CGFloat* colors = CGColorGetComponents(hsbaColor.CGColor);
     

这是否返回一个浮子,或float数组?它看起来像星号是简写形式,创建一个数组。这是否正确?

排序的。

CGFloat *colors声明变量保持的指针的至少一个CGFloat的。 CGColorGetComponents指针返回到几个CGFloats,一个在另一个-C数组之后。你把该指针并将其分配给(把指针在)的colors变量。

声明变量不创建阵列。事实上,无论是不CGColorGetComponents。无论创建的CGColor对象创建的阵列,并存储它的对象内部; CGColorGetComponents让你使用指针,存储

声明的CGFloat *colors变量仅创建一个布局可变的指针存储到一个或多个CGFloats。在变量的东西是指针,并在该指针中的东西是数组。

如果这还不清楚,看你需要知道用C 的指针一切。

苹果

它返回有石英颜色相关联的颜色分量(包括α)的值。强度的阵列用于与相关联的色彩分量(包括α)值 指定的颜色。阵列的大小大于用于该颜色的色空间的分量的数目更多的一个。

要得到RGB分量我使用:

// Get UIColor's RGB normalized components (0..1)
CGFloat red, green, blue, alpha;
[color getRed:&red green:&green blue:&blue alpha:&alpha];

// Convert RGB components to 8-bit values (0..255)
int r = (int)(red * 255.0);
int g = (int)(green * 255.0);
int b = (int)(blue * 255.0);

下面是一个如何可以将CGColorRef myColorRef正确地转换为NSColor myNSColor一个例子:

NSColorSpace *cp = [[NSColorSpace alloc] initWithCGColorSpace:CGColorGetColorSpace(myColorRef)];
const CGFloat *components = CGColorGetComponents(myColorRef);
size_t componentCount = CGColorGetNumberOfComponents(myColorRef);
NSColor* myNSColor = [NSColor colorWithColorSpace:cp components:components count:componentCount];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top