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); } 

在此处输入图像描述

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