2013-12-08 5 views
0

Если я запускаю следующий код:CGColorComponents вернуть черный (0, 0, 0) для UIColor whiteColor

CGColorRef cgcolor = [[UIColor whiteColor] CGColor]; 

int numComponents = CGColorGetNumberOfComponents(cgcolor); 

CGFloat red = 0, green = 0, blue = 0; 

if (numComponents >= 3) 
{ 
    const CGFloat *components = CGColorGetComponents(cgcolor); 
    red = components[0]; 
    green = components[1]; 
    blue = components[2]; 
} 

An NSLog красного, зеленого и синего возвращает 0 для каждого из них; однако, если я даю ему какой-либо другой цвет, он отображает цвет, который я хочу отобразить.

Почему это?

ответ

3

Цвета, подобные белым и черным, представлены в монохромном цветовом пространстве (черный/белый, альфа), в отличие от (красного, зеленого, синего). NSLog из numComponents вернет 2, поэтому ваш блок if никогда не будет выполнен.

+0

О, хорошо, это имеет смысл. Спасибо, это работает! – David