如何使用Core Graphics / Quartz 2D在iOS中制作圆锥形渐变?

时间:2011-03-21 14:41:51

标签: ios core-graphics gradients radial-gradients

如何使用Core Graphics / Quartz 2D API在iOS中绘制这样的锥形渐变?

Conical Gradient Sample http://ods.com.ua/win/eng/other/gimpdoc-html/painta27.gif

4 个答案:

答案 0 :(得分:6)

最近我为此制作了一个自定义CALayer类:AngleGradientLayer

它没有经过性能测试,所以要小心。

screenshot

答案 1 :(得分:4)

如果仍在寻找解决方案,Apple最终在iOS 12中引入了.conic渐变类型。非常适合遮罩以创建带有渐变的圆形进度条。

示例:

let gradientLayer = CAGradientLayer()
gradientLayer.startPoint = CGPoint(x: 0.5, y: 0.5)
gradientLayer.endPoint = CGPoint(x: 0.5, y: 0)
gradientLayer.type = .conic
gradientLayer.colors = [UIColor.red.cgColor, UIColor.orange.cgColor, UIColor.green.cgColor]
gradientLayer.frame = bounds

conic_gradient

答案 2 :(得分:2)

此渐变样式没有Quartz函数。除非你准备深入研究它背后的数学,否则我建议你使用预先制作的图像。如果你只需要它用于不透明蒙版,这不是问题。

答案 3 :(得分:2)

我想要纯粹的Swift解决方案,对我来说这也是一项具有挑战性的任务。

最后,我写了AEConicalGradient,用有趣的方法做到了这一点(通过使用圆圈并在中心绘制不同颜色的线条)。

AEConicalGradient