【发布时间】:2013-04-16 17:39:25
【问题描述】:
我有一个UIView,它使用UIBezierPath 以编程方式绘制“sunburst”模式。现在我想通过用渐变遮罩边缘来扩展它——有效地使每个“突发”从不透明淡化为透明。我认为这可以通过 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,并将其用作遮罩层。如果有人对此过程感兴趣,它正在使用this test project.
【问题讨论】:
标签: ios objective-c uiview calayer quartz-core