iOS,绘制填充矩形的径向渐变

时间:2013-01-05 08:17:35

标签: ios uiview gradient drawrect

下面的代码绘制了一个完美的椭圆径向渐变,但没有填充它的视角。如何让它超出椭圆的边缘?记录的选项是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);
}

enter image description here

1 个答案:

答案 0 :(得分:4)

您已将绘图剪裁为椭圆。这会阻止在裁剪区域外绘制渐变。删除添加椭圆的行并剪切上下文。