8

如何使用CAGradientLayer最有效地围绕圆/带角度绘制渐变?

我在这个项目的帮助下做了一个下面的。它使用位图上下文进行绘图,但CAGradientLayer会更有效。

不幸的是,我只能弄清楚如何用它制作线性渐变。

4

2 回答 2

11

我意识到自从提出这个问题以来已经过去了很多年,但是对于现在偶然发现它的任何人来说,iOS 12 添加了一个圆锥渐变类型,这使得这成为可能。

gradientLayer.type = CAGradientLayerType.conic
gradientLayer.frame = bounds
gradientLayer.colors = [startColor.cgColor, endColor.cgColor]
gradientLayer.startPoint = CGPoint(x: 0.5, y: 0.5)
gradientLayer.endPoint = CGPoint(x: 0.5, y: 0)
于 2019-04-07T05:25:57.083 回答
3

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

存在 type 属性的事实表明 Apple 将在未来的某个日期添加更多类型,而径向渐变看起来非常相似。

您可能会考虑创建自己的 CAGradientLayer 自定义子类,它可以绘制径向渐变和线性渐变。我在网上看到过创建自定义 CALayer 子类的演示项目。

于 2014-03-08T14:29:10.930 回答