Почему мой CGGradient не работает с предустановленным UIColor?

У меня есть этот рабочий код:

    NSMutableArray *shadowColors = [NSMutableArray arrayWithCapacity:2];
    color = [UIColor colorWithRed:0 green:0 blue:0 alpha:1]; // Declaration using components
    [shadowColors addObject:(id)[color CGColor]];
    color = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.0]; // Declaration using components
    [shadowColors addObject:(id)[color CGColor]];

    CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
    CGGradientRef gradient = CGGradientCreateWithColors(space, (CFArrayRef)shadowColors, NULL);
    CGColorSpaceRelease(space);

    CGFloat sw = 10.0; // shadow width

    CGPoint top1 = CGPointMake(x, y+width/2.0);
    CGPoint top2 = CGPointMake(x + sw, y+width/2.0);

    CGPoint side1 = CGPointMake(x+width/2.0, y);
    CGPoint side2 = CGPointMake(x+width/2.0, y+sw);

    CGContextDrawLinearGradient(c, gradient, top1, top2, 0);
    CGContextDrawLinearGradient(c, gradient, side1, side2, 0);
    CGGradientRelease(gradient);

Объявления цвета - это та часть, которая меня интересует, строки 2 и 4. Когда я объявляю их, как показано, они работают нормально, но если я заменю эти две строки эквивалентом (я подумал, по крайней мере) [UIColor blackColor] и [UIColor clearColor] , то мои градиенты исчезают. Цвета, которые я использую, не имеют никакого значения, я могу использовать greenColor и redColor , но они все равно не работают.

Я что-то упускаю или это ошибка в Фреймворки Apple?


Код, который не работает . И это только первый раздел, все остальное то же самое.

    NSMutableArray *shadowColors = [NSMutableArray arrayWithCapacity:2];
    color = [UIColor blackColor];
    [shadowColors addObject:(id)[color CGColor]];
    color = [UIColor clearColor];
    [shadowColors addObject:(id)[color CGColor]];
8
задан Peter Hosey 10 October 2010 в 18:11
поделиться