在ios7以前使用ColorSpace的坑
Last updated
Last updated
[UIColor WhiteColor]类方法获取的
CGColorGetNumberOfComponents
是2 而且打印出来的
UIDeviceWhiteColorSpace
只有两个数字
RGBA彩色颜色测试
获取的CGColorGetNumberOfComponents是4 而且打印出来的UIDeviceWhiteColorSpace只有四个数字
结论:
用[UIColor xxxColor]或者用[UIColor ColorWithWhite:Alpha:]来创建UIColor(UIDeviceWhiteColorSpace),所有CGColorRef的Components只有2 colors components,而CGColorRef的Components有4个 colors components的话是用[UIColor WithRed:Green:Blue:Alpha:]来创建UIColor的(UIDeviceRGBColorSpace),例如上面的[UIColor greenColor]等其他RGB颜色。
PS: 在iOS7以前,通过[UIColor xxxColor]返回的颜色类型为UIDeviceCachedColorSpace,并不是UIDeviceRGBColorSpace!!!在通过- (BOOL)getHue:(nullable CGFloat *)hue saturation:(nullable CGFloat *)saturation brightness:(nullable CGFloat *)brightness alpha:(nullable CGFloat *)alpha方法获取H(hues)色相,S(saturation)饱和度,B(brightness)亮度时会导致崩溃。