在ios7以前使用ColorSpace的坑

[UIColor WhiteColor]类方法获取的

  1. CGColorGetNumberOfComponents

    是2 而且打印出来的

    UIDeviceWhiteColorSpace

    只有两个数字

  2. 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)亮度时会导致崩溃。

Last updated