创建具有 4 种颜色和小交叉点的渐变?

Create gradient with 4 colors and small intersections?

这里有很多关于如何创建多色渐变的问题,但我正在努力的是在渐变区域很小的地方创建渐变。例如,我想在视图中显示 4 种颜色,并且我希望颜色之间的 3 个交点具有较小的渐变。

    gradientLayer = CAGradientLayer()
    gradientLayer.frame = gradientFrame
    let locations = [Float](arrayLiteral: 0.3, 0.35, 0.8, 0.85)
    gradientLayer.locations = locations.map { NSNumber(value: [=10=]) }
    gradientLayer.colors = [UIColor.red.cgColor,
                            UIColor.orange.cgColor,
                            UIColor.green.cgColor,
                            UIColor.gray.cgColor]
    layer.insertSublayer(gradientLayer, at: 0)

我在红色和橙色、绿色和灰色之间得到很好的渐变。但是橙色和绿色之间的渐变更大,看起来不对。

我没能解决这个问题。有什么解决办法吗?

在颜色序列中使用绿色两次。红橙绿绿灰。现在你可以在中间有一个大的纯绿色,在它的两边有一个细的过渡。示例:

    let locations = [Float](arrayLiteral: 0.3, 0.35, 0.4, 0.8, 0.85)
    gradientLayer.locations = locations.map { NSNumber(value: [=10=]) }
    gradientLayer.colors = [UIColor.red.cgColor,
                            UIColor.orange.cgColor,
                            UIColor.green.cgColor,
                            UIColor.green.cgColor,
                            UIColor.gray.cgColor]

这是一般原则;随心所欲地调整它。