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

13
我该如何使用Core Graphics / Quartz 2D API在iOS中绘制这样一个圆锥形渐变?请参考以下图像: Conical Gradient Sample (图片来源: ods.com.ua)
4个回答

16

如果有人仍在寻找解决方案,苹果最终在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


1
在iOS 12中,由于.conic可用,我们如何在之前的版本(iOS 11)中实现它? - Ahmed Sahib
你必须寻找在这个问题中提出的其他解决方案。 - Michał Kwiecień

6

最近我为此创建了一个自定义的CALayer类: AngleGradientLayer

它的性能尚未经过测试,所以请注意。

截图


3
我希望能够用纯Swift语言解决这个问题,对我来说也是一个有挑战性的任务。
最终,我编写了 AEConicalGradient 来实现这一目标,它采用了一种有趣的方法(通过使用圆形并绘制不同颜色的线到中心)。

AEConicalGradient


1

对于这种渐变样式,Quartz 没有相应的函数。除非你准备深入研究其背后的数学原理,否则建议使用预制图像。如果你只需要透明度掩码,那么这并不是问题。


如果你只需要支持小于12的版本,那么这很容易做到。但实际上,它们已经添加到了12,因此现在包含在iOS中。 - Fattie
2
他们把它添加到了CoreGraphics的哪里?我只在CALayer中看到.conic,但是CoreGraphics只渲染径向和线性,不渲染.conic。 - Peter Suwara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接