1

我可以用来CGContextDrawRadialGradient制作一个可以进行 alpha 淡入淡出的球体UIColor.clearColor并且它可以工作。

但是,我正在尝试做这种事情:

在此处输入图像描述

虽然在周围放置一些战略球会产生有趣的效果(类似于战略位置的 LED 背光),但我希望获得真正的光芒。如何在圆角矩形周围绘制发光drawRect

4

1 回答 1

2

您可以使用 围绕任何路径创建发光效果CGContextSetShadowWithColor,但无法精确控制外观。特别是,默认阴影相当轻:

默认阴影

我知道让它变暗的唯一方法是把它重新画在自己身上:

在此处输入图像描述

不是最佳的,但它非常接近您想要的。

这些图像由以下生成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);
}

要记住的一件事是渲染模糊阴影相当昂贵,这可能是也可能不是问题,具体取决于重绘视图的频率。如果阴影不需要动画,请考虑将它们渲染UIImage一次,然后将结果显示在UIImageView.

于 2012-04-09T22:38:10.153 回答