当我尝试使用以下代码获取CGColor
的组件时:
CGFloat *components = CGColorGetComponents(customizedCGColor);
我收到了
的警告使用'const CGFloat *'(又名'const float *')类型的表达式初始化'CGFloat *'(又名'float *')会丢弃限定符。)
这是什么以及CGFloat *
实际上是什么意思,为什么不使用CGFloat。
答案 0 :(得分:0)
您正尝试将const CGFloat
分配给CGFloat
,这就是您收到警告的原因。
为const
变量
CGFloat
const CGFloat *components = CGColorGetComponents(customizedCGColor);
答案 1 :(得分:0)
按以下方式更新您的声明:
CGFloat const *components = CGColorGetComponents(customizedCGColor);
答案 2 :(得分:0)
颜色是根据红色,绿色,蓝色和阿尔法强度定义的,并且该方法返回这些组件的数组;因此:
:before
但是返回的组件数量取决于所使用的色彩空间。
您收到错误的原因是您用于保存返回数组的变量不是const CGFloat *components = CGColorGetComponents(customizedCGColor);
CGFloat red = components[0];
CGFloat blue = components[1];
CGFloat green = components[2];
CGFloat alpha = components[3];
,因此类型不正确。
定义它const
的原因是因为该方法不希望调用者通过它返回的数组更改颜色组件;例如,如果你尝试:
const
编译器将生成错误,因为您无法修改const CGFloat *components = CGColorGetComponents(customizedCGColor);
components[0] = newRed;
数组。