iOS, Нарисуйте радиальный градиент, заполняющий перекресток

Приведенный ниже код рисует идеальный эллиптический радиальный градиент, но не заполняет углы его представления. Как мне заставить его рисовать за пределами эллипса? Задокументированный вариант - kCGGradientDrawsAfterEndLocation, но я думаю, что он недоступен в ios.

- (void)drawRect:(CGRect)rect
{
    CGFloat colors [] = {
        0.2, 0.2, 0.2, 1.0,
        0.0, 0.0, 0.0, 1.0
    };
    CGColorSpaceRef baseSpace = CGColorSpaceCreateDeviceRGB();
    CGGradientRef gradient = CGGradientCreateWithColorComponents(baseSpace, colors, NULL, 2);
    CGColorSpaceRelease(baseSpace), baseSpace = NULL;
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);
    CGContextAddEllipseInRect(context, rect);
    CGContextClip(context);
    CGContextDrawRadialGradient(context, gradient, self.center, 0, self.center, self.frame.size.width, kCGGradientDrawsAfterEndLocation);
    CGGradientRelease(gradient), gradient = NULL;
    CGContextRestoreGState(context);
}

введите описание изображения здесь


person Mr Wolf    schedule 05.01.2013    source источник


Ответы (1)


Вы обрезали рисунок по эллипсу. Это останавливает рисование градиента за пределами области отсечения. Удалите линию, где вы добавляете эллипс, и обрежьте контекст.

person jrturton    schedule 05.01.2013