получить компоненты цвета в объективе - PullRequest
1 голос
/ 21 февраля 2012

Вот фрагменты кода для получения RGB-компонентов цвета. Что я могу сделать, если _countComponents меньше четырех, например два? Я пытался получить компоненты серого цвета [UIColor grayColor]

int _countComponents = CGColorGetNumberOfComponents(colorRef);

if (_countComponents == 4) {
    const CGFloat *_components = CGColorGetComponents(colorRef);
    CGFloat red     = _components[0];
    CGFloat green = _components[1];
    CGFloat blue   = _components[2];
    CGFloat alpha = _components[3];

Ответы [ 3 ]

5 голосов
/ 21 февраля 2012

Если у вас есть экземпляр UIColor и вы хотите, чтобы это были значения RGB, почему бы не использовать метод -getRed:green:blue:alpha:?

CGFloat r, g, b, a;
BOOL success = [myColor getRed:&r green:&g blue:&b alpha:&a];
if (success) {
    // the color was converted to RGB successfully, go ahead and use r,g,b, and a.
}
1 голос
/ 21 февраля 2012

Новый ответ

После перечитывания вопроса.Чтобы ответить на вопрос о компонентах Грея, то, как вы читаете это с помощью - (BOOL) getWhite: alpha:

Таким образом, вы бы сделали, как в соответствии с Caleb, что-то вроде:

BOOL success = [myColor getWhite:&w alpha:&a];

Это даету вас значение серого w от 0 до 1 и альфа-значение a от 0 до 1

См. документы Apple getWhite: alpha:

Старый ответ

Из этого вопроса SO Как получить доступ к цветным компонентам uicolor

См. (Довольно старый) ArsTechnica artical iphone-development-accessing-uicolor-компоненты

1 голос
/ 21 февраля 2012

Компоненты цвета зависят от связанного цветового пространства .

Так что _components[0], _components[1] и т. Д. Необязательно: красный, зеленый, синий и альфа.

...