什么CGColorGetComponents()回报?
-
16-09-2019 - |
题
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];
不隶属于 StackOverflow