# 在ios7以前使用ColorSpace的坑

\[UIColor WhiteColor]类方法获取的

1.  **CGColorGetNumberOfComponents**

    是2 而且打印出来的

    **UIDeviceWhiteColorSpace**

    只有两个数字
2. ![](http://img.blog.csdn.net/20160530140111698)
3.  RGBA彩色颜色测试

    获取的**CGColorGetNumberOfComponents**是4 而且打印出来的**UIDeviceWhiteColorSpace**只有四个数字

![](http://img.blog.csdn.net/20160530140956273)

**结论：**

**用\[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）亮度时会导致崩溃。
