Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 关于UIColor,这是一个bug还是什么?_Ios_Uicolor - Fatal编程技术网

Ios 关于UIColor,这是一个bug还是什么?

Ios 关于UIColor,这是一个bug还是什么?,ios,uicolor,Ios,Uicolor,我曾经认为[UIColor whiteColor]与[UIColor WithRed:1绿色:1蓝色:1阿尔法:1]完全相同,但事实证明并非如此!有人能解释一下吗 CGFloat red1, green1, blue1, alpha1; UIColor * color1 = [UIColor whiteColor]; [color1 getRed:&red1 green:&green1 blue:&blue1 alpha:&alpha1]; NSLog(@"%f,

我曾经认为[UIColor whiteColor]与[UIColor WithRed:1绿色:1蓝色:1阿尔法:1]完全相同,但事实证明并非如此!有人能解释一下吗

CGFloat red1, green1, blue1, alpha1;
UIColor * color1 = [UIColor whiteColor];
[color1 getRed:&red1 green:&green1 blue:&blue1 alpha:&alpha1];
NSLog(@"%f, %f, %f, %f", red1, green1, blue1, alpha1);

UIColor * color2 = [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
[color2 getRed:&red1 green:&green1 blue:&blue1 alpha:&alpha1];
NSLog(@"%f, %f, %f, %f", red1, green1, blue1, alpha1);
输出:

0.000000, 0.000000, 0.000000, -1.998628
1.000000, 1.000000, 1.000000, 1.000000

这太不酷了。。非常不愉快

来自
UIColor的文档获取红色:绿色:蓝色:alpha:

如果颜色位于兼容的颜色空间中,则颜色将转换为RGB格式,其组件将返回到应用程序。如果颜色不在兼容的颜色空间中,则参数不变

[UIColor whiteColor]
和使用
UIColor whiter:alpha:
创建的灰色阴影来自与RGB颜色空间不同的颜色空间。因此,它们不在兼容的颜色空间中。因此,将
UIColor getRed:green:blue:alpha:
与这些颜色一起使用是不合适的


尝试初始化4个CGFloat值,看看结果如何。如果将它们全部设置为零,它们应该保持为零。

…并且getRed:green:blue:alpha:也将返回NO。