2013-01-05 45 views
6

下面的代码绘制了一个完美的椭圆径向渐变,但没有填充它的视角。我如何让它在椭圆的边缘之外画?记录的选项是kCGGradientDrawsAfterEndLocation,但我认为它在ios中不可用。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

回答

4

你修剪图纸到椭圆形。这将停止在裁剪区域外绘制的渐变。删除添加椭圆的线并剪辑上下文。

+0

恩,谢谢先生... – Mrwolfy