2014-03-06 70 views
5

我如何使用CAGradientLayer最有效地周围画一个圆圈渐变/带角度?使用CAGradientLayer一个角/圆弧梯度

我这个project的帮助下做出的一个。它使用位图背景绘制但CAGradientLayer将更为高效。

不幸的是,我只能想出如何使线性渐变它。目前

回答

3

梯度层只支持线性梯度。但是,如果您查看渐变图层的界面,它将包含一个类型属性。现在唯一定义的类型是kCAGradientLayerAxial(线性)。

事实上,有一个类型属性表明,苹果将在未来的某个日期添加更多的类型,径向渐变看起来像是一个非常类似的增加。

你可能看创建CAGradientLayer的自己的自定义类,用于绘制径向渐变以及线性。我在网上看过创建自定义CALayer子类的演示项目。

+0

嘿谢谢大家的响应,是啊,我刚才的链接项目创建的CALayer的子类来渲染角梯度我上面显示。不幸的是,这是相当缓慢,因为它正在绘制到CGBitmapContext。 – Max

+1

不幸的是,kCAGradientLayerAxial自推出以来一直是唯一支持的渐变类型。所以,即使我们可以假定某些时候会添加对其他类型渐变的支持,但我不会很快发生。 –

+1

核心图形具有CGContextDrawRadialGradient方法。有时间实现支持您自己的渐变类型的CAGradientLayer的自定义子类。你可以实现drawInContext:并调用CGContextDrawRadialGradient。它应该只需要几行代码和图层上的一些额外属性来实现。 –