我有一个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
如果有谁知道任何其他方式来掩盖与模糊边缘的一圈视图。
解决方案:由于马特的洞察力,我结束了绘制使用掩模视图CGContextDrawRadialGradient
,渲染,作为一个UIImage
,并将它作为一个屏蔽层。 如果有人有兴趣在这个过程中,它被用于这个测试项目。
一个显而易见的方法是手工绘制这种效果。 开始很小,并绘制旭日越来越大和(同时)越来越少不透明。
在另一方面,它可能是足以使径向渐变,并使用它作为掩模(晕影效果)。 核芯显卡将以此为径向渐变为您提供:
https://developer.apple.com/library/ios/#documentation/graphicsimaging/reference/CGContext/Reference/reference.html#//apple_ref/c/func/CGContextDrawRadialGradient
我也很喜欢CIFilters的添加这样的接触:你应该看看通过目录,看看有什么冲击你相象:
https://developer.apple.com/library/ios/#documentation/graphicsimaging/reference/CoreImageFilterReference/Reference/reference.html
CIFilter实际上给你,可能会满足您的要求,特别是如果有屏蔽和合成相结合的旭日过渡; 这里的旭日(在动画中使用),从我的书的讨论:
http://www.apeth.com/iOSBook/ch17.html#_cifilter_transitions
CAGradientLayer
绘制线性梯度。
你可以尝试设置一个影子,看看是否适合您的需要:
l.shadowColor = [UIColor blackColor];
l.shadowRadius = rect.size.width / 2;
您可以通过创建一个CALayer的实例做到这一点,并给它一个实现drawLayer委托:inContext的:在该方法的实施绘制径向渐变。 然后使用的CALayer作为你的面具。