Определение цвета как CGFloat

Я создаю градиент со следующим кодом, который я нашел в другом stackoverflow сообщение о рисовании радиальных градиентов в iOS

- (void)drawInContext:(CGContextRef)ctx
{ 
    if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"theme"] isEqualToString:@"black"]) {

    }

    size_t gradLocationsNum = 2;
    CGFloat gradLocations[2] = {0.0f, 1.0f};
    CGFloat gradColors[8] = {156/255.0f, 97/255.0f, 249/255.0f,1.0f,41/255.0f,131/255.0f,242/255.0f,1.0f};
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, gradColors, gradLocations, gradLocationsNum);
    CGColorSpaceRelease(colorSpace);

    CGPoint gradCenter= CGPointMake(self.bounds.size.width/2, self.bounds.size.height+100);
    float gradRadius = MAX(self.bounds.size.width , self.bounds.size.height) ;

    CGContextDrawRadialGradient(ctx, gradient, gradCenter, 0, gradCenter, gradRadius, kCGGradientDrawsAfterEndLocation);


    CGGradientRelease(gradient);
}

Я не знаю, как определить CGFloat gradColors[8] = {156/255.0f, 97/255.0f, 249/255.0f,1.0f,41/255.0f,131/255.0f,242/255.0f,1.0f};, чтобы я мог сделать что-то вроде:

CGFloat gradColors[8];

if ...
    gradColors[8] = {156/255.0f, 97/255.0f, 249/255.0f,1.0f,41/255.0f,131/255.0f,242/255.0f,1.0f};
else if ...
    gradColors[8] = {156/255.0f, 97/255.0f, 249/255.0f,1.0f,41/255.0f,131/255.0f,242/255.0f,1.0f};

Также: есть ли способ преобразовать UIColor в этот формат?


person Apollo    schedule 06.04.2016    source источник


Ответы (1)


Вы можете попробовать использовать CGGradientCreateWithColors(), которые принимают массив CGColor.

eg.

CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)@[(id)aUIColor1.CGColor, (id)aUIColor2.CGColor], gradientLocations);
person BB9z    schedule 06.04.2016