Нечетное преобразование между UIColor и CGColor

Итак, вот цвета, которые я пытаюсь преобразовать из UIColor в CGColor:

001385 - R:0 G:19 B:133

ca000b - R:202 G:0 B:11

Вот рендеринг Blue против iOS: a:введите здесь описание изображенияb:введите здесь описание изображения

Вот рендеринг Red против iOS: a‹code›введите описание изображения здесь‹/code›b: < img src="https://i.stack.imgur.com/FMozC.png" alt="введите здесь описание изображения">

Вот код, который я использую для преобразования цветов: Красный:

[[UIColor colorWithRed:202 green:0 blue:11 alpha:1] CGColor]

Синий:

[[UIColor colorWithRed:0 green:19 blue:133 alpha:1] CGColor]

Кто-нибудь знает, что я делаю неправильно?


person Jake Chasan    schedule 17.03.2014    source источник
comment
Прочитайте документы для UIColor colorWithRed:green:blue:alpha:.   -  person rmaddy    schedule 17.03.2014


Ответы (2)


Нужно разделить параметры на 255,0. Как отметил @Duncan C, убедитесь, что вы делите на 255,0

[[UIColor colorWithRed:202.0/255.0 green:0 blue:11/255.0 alpha:1] CGColor]


[[UIColor colorWithRed:0 green:19/255.0 blue:133/255.0 alpha:1] CGColor]
person jervine10    schedule 17.03.2014
comment
Итак, я думаю, параметры должны меняться только от 0 до 1. Спасибо за ответ. - person Jake Chasan; 17.03.2014
comment
Убедитесь, что вы делите на 255,0. Это заставляет математику быть с плавающей запятой и возвращать десятичные значения. Если вы разделите на 255, то, скорее всего, произведете целочисленную математику и получите ноль для всего, что меньше 255/255. - person Duncan C; 17.03.2014

Удобная категория для добавления в UIColor:

Затем вы можете сделать, например: [UIColor R:0 G:19 B:133]

@interface UIColor (RGB)

+(UIColor*)R:(NSUInteger)r G:(NSUInteger)g B:(NSUInteger)b;
+(UIColor*)R:(NSUInteger)r G:(NSUInteger)g B:(NSUInteger)b A:(CGFloat)a;

@end

@implementation UIColor (RGB)

+(UIColor*)R:(NSUInteger)r G:(NSUInteger)g B:(NSUInteger)b {
     return [self R:r G:g B:b A:1.0];
}

+(UIColor*)R:(NSUInteger)r G:(NSUInteger)g B:(NSUInteger)b A:(CGFloat)a {
    return [UIColor colorWithRed:((CGFloat)r)/255.0 green:((CGFloat)g)/255.0 blue:((CGFloat)b)/255.0 alpha:a];
}

@end
person Mike Pollard    schedule 17.03.2014