Как получить доступ к цветным компонентам UIColor? - PullRequest
4 голосов
/ 22 апреля 2010

т.е. Я хочу знать значение синего. Как бы я получить это от UIColor?

Ответы [ 3 ]

6 голосов
/ 22 апреля 2010

Класс UIColor не предоставляет информацию о цветовых компонентах. Вместо этого вы должны получить компоненты из его CGColor. Обратите внимание, что количество компонентов зависит от цветового пространства, используемого в CGColorRef.

Этот код печатает компоненты для синего цвета:

UIColor* color = [UIColor blueColor];
int n = CGColorGetNumberOfComponents(color.CGColor);
const CGFloat *coms = CGColorGetComponents(color.CGColor);
for (int i = 0; i < n; ++i)
    NSLog(@"%f", coms[i]);
0 голосов
/ 23 января 2014

Только что создал для этого категорию.

NSLog(@"%f", [UIColor blueColor].blue); // 1.000000

Идет что-то вроде:

typedef enum { R, G, B, A } UIColorComponentIndices;

@implementation UIColor (EPPZKit)

-(CGFloat)red
{ return CGColorGetComponents(self.CGColor)[R]; }

-(CGFloat)green
{ return CGColorGetComponents(self.CGColor)[G]; }

-(CGFloat)blue
{ return CGColorGetComponents(self.CGColor)[B]; }

-(CGFloat)alpha
{ return CGColorGetComponents(self.CGColor)[A]; }

@end

Часть eppz!kit с дополнительными лакомствами UIColor .

0 голосов
/ 22 апреля 2010

Я только что искал эту проблему сегодня утром. Я не знаю, почему UIColor такой неполный по сравнению с NSColor. Во всяком случае, я нашел эту полезную категорию для UIColor: Доступ к компонентам UIColor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...