我有UIView
一个使用. UIBezierPath
现在我想通过用渐变遮蔽边缘来扩展它——有效地使每个“突发”从不透明淡化为透明。我认为这可以用CAGradientLayer
面具来完成,但我不知道如何使它成为圆形。
这就是我正在尝试的——它掩盖了视图,但渐变是线性的:
CAGradientLayer *l = [CAGradientLayer layer];
l.frame = CGRectMake(0.0f, 0.0f, rect.size.width, rect.size.height);
l.cornerRadius = rect.size.width/2.0f;
l.masksToBounds = YES;
l.colors = [NSArray arrayWithObjects:(id)[UIColor blackColor].CGColor, (id)[UIColor clearColor].CGColor, nil];
self.layer.mask = l;
CAGradientLayer
如果有人知道用边缘模糊的圆圈掩盖视图的任何其他方法,我愿意不使用。
解决方案
感谢 matt 的洞察力,我最终使用 绘制了一个遮罩视图CGContextDrawRadialGradient
,将其渲染为UIImage
,并将其用作遮罩层。如果有人对这个过程感兴趣,它正在这个测试项目中使用。