非循环发光的CGContextDrawRadialGradient

我能够使用CGContextDrawRadialGradient来做一个阿尔法淡入UIColor.clearColor的球体,它的工作原理。

不过,我正在尝试做这样的事情:

在这里输入图像说明

虽然放置一些战略领域使得一个有趣的效果(类似于战略地点的LED背光),我很想得到真正的光芒。 如何在drawRect围绕圆angular矩形绘制光晕?

您可以使用CGContextSetShadowWithColor在任何path周围创build发光效果,但是不能精确控制外观。 特别是,默认阴影很轻:

默认阴影

而我所知道的只有把它变黑的方法是再把它画出来:

在这里输入图像说明

不是最佳的,但它近似于你想要的东西。

这些图像是由以下drawRect生成的:

 - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGMutablePathRef path = CGPathCreateMutable(); int padding = 20; CGPathMoveToPoint(path, NULL, padding, padding); CGPathAddLineToPoint(path, NULL, rect.size.width - padding, rect.size.height / 2); CGPathAddLineToPoint(path, NULL, padding, rect.size.height - padding); CGContextSetShadowWithColor(context, CGSizeZero, 20, UIColor.redColor.CGColor); CGContextSetFillColorWithColor(context, UIColor.blueColor.CGColor); CGContextAddPath(context, path); CGContextFillPath(context); // CGContextAddPath(context, path); // CGContextFillPath(context); CGPathRelease(path); } 

有一件事要记住,渲染模糊阴影是相当昂贵的,这可能或可能不是一个问题取决于你的意见重绘的频率。 如果阴影不需要animation,请考虑将其渲染为UIImage一次,然后将结果显示在UIImageView