iOS Gradient и UIColors

У меня есть следующий код, но я не знаю, как получить мой UIColor * в массив градиента.цвета:

CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.view.frame;

UIColor *lightGreen = [UIColor colorWithRed:66.0f/255.0f green:79.0f/255.0f blue:91.0f/255.0f alpha:1.0f];
UIColor *darkGreen = [UIColor colorWithRed:66.0f/255.0f green:79.0f/255.0f blue:91.0f/255.0f alpha:1.0f];

gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor lightGrayColor]CGColor], (id)[[UIColor darkGrayColor]CGColor], nil];

[self.view.layer addSublayer:gradient];

person cdub    schedule 21.08.2013    source источник
comment
Ваш пример работает для меня. Может быть, есть проблема во второй строке, где вы должны назначить self.view.bounds?   -  person JakubKnejzlik    schedule 30.11.2013


Ответы (1)


Я сделал это так, следуя образцу Apple. Он предназначен для переопределения drawRect в UIView. Не очень абстрактно, но работает.

CGGradientRef myGradient;
CGColorSpaceRef myColorspace;
size_t num_locations = 2;
CGFloat locations[2] = { 0.0, 1.0 };

CGFloat comps[8];
const CGFloat *start = CGColorGetComponents(startColor.CGColor);
for (int i=0; i<4; i++) {
    comps[i] = start[i];
}
const CGFloat *end = CGColorGetComponents(endColor.CGColor);
for (int i=0; i<4; i++) {
    comps[i+4] = end[i];
}   

myColorspace = CGColorSpaceCreateDeviceRGB();
myGradient = CGGradientCreateWithColorComponents (myColorspace, comps,
        locations, num_locations);

Для простой задачи добавления CGColorRef объектов в массив:

CGColorRef colorArray[2] = { lightGreen.CGColor, darkGreen.CGColor };
person Mundi    schedule 21.08.2013
comment
нет ли способа передать указатель UIColor в массив градиента.colors? - person cdub; 21.08.2013
comment
Я добавил соответствующую строку. Это действительно тот же синтаксис, что и продемонстрированный выше. - person Mundi; 21.08.2013