gpt4 book ai didi

iphone - CGColorGetComponents 有问题吗?

转载 作者:IT王子 更新时间:2023-10-29 08:14:32 27 4
gpt4 key购买 nike

当我使用从 UIColor 返回的 CGColor 调用 CGColorGetComponents 时,它似乎可以正常工作 除了白色和黑色。

这是代码...

CGColorRef myColorRef = [[UIColor whiteColor] CGColor];

const CGFloat * colorComponents = CGColorGetComponents(myColorRef);

NSLog(@"r=%f, g=%f, b=%f, a=%f",
colorComponents[0],
colorComponents[1],
colorComponents[2],
colorComponents[3]);

这个日志

r=1.000000, g=1.000000, b=0.000000, a=0.000000

注意 B 和 A 都是零,而不是一。

如果您替换为其他颜色,如 redColor、blueColor 等,它会起作用...RGB 和 A 值设置为人们所期望的。但同样,黑色和白色会产生奇怪的结果。此功能是否存在问题,或者是否有一些我应该做的解决方法/任务?

最佳答案

[UIColor whiteColor][UIColor blackColor] 使用 [UIColor colorWithWhite:alpha:] 创建 UIColor。这意味着这个 CGColorRef 只有 2 个颜色分量,而不是像 [UIColor colorWithRed:green:blue:alpha:] 创建的 4 个颜色。

当然你也可以使用 NSLog。

if (CGColorGetNumberOfComponents(myColorRef) == 2) {
const CGFloat *colorComponents = CGColorGetComponents(myColorRef);
NSLog(@"r=%f, g=%f, b=%f, a=%f", colorComponents[0], colorComponents[0], colorComponents[0], colorComponents[1]);
}
else if (CGColorGetNumberOfComponents(myColorRef) == 4) {
const CGFloat * colorComponents = CGColorGetComponents(myColorRef);
NSLog(@"r=%f, g=%f, b=%f, a=%f", colorComponents[0], colorComponents[1], colorComponents[2], colorComponents[3]);
}
else {
NSLog(@"What is this?");
}

请注意,也有不同的颜色空间。因此,如果您不仅需要此代码进行日志记录(例如将 RGBA 字符串保存为 json),您还必须检查(并可能转换)colorSpace。

关于iphone - CGColorGetComponents 有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9238743/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com