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

Meg*_*anX 1 ios cagradientlayer swift

这里有很多关于如何创建多色渐变的问题,但我正在努力的是在渐变区域很小的地方创建渐变。例如,我想查看 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: $0) }
    gradientLayer.colors = [UIColor.red.cgColor,
                            UIColor.orange.cgColor,
                            UIColor.green.cgColor,
                            UIColor.gray.cgColor]
    layer.insertSublayer(gradientLayer, at: 0)
Run Code Online (Sandbox Code Playgroud)

我在红色和橙色以及绿色和灰色之间得到了很好的渐变。但是橙色和绿色之间的渐变要大得多,看起来不太对。

在此处输入图片说明

我一直无法解决这个问题。任何解决方案?

mat*_*att 5

按颜色顺序使用绿色两次。红橙绿绿灰。现在你可以在中间有一个大的纯绿色,在它的两侧有薄的过渡。例子:

    let locations = [Float](arrayLiteral: 0.3, 0.35, 0.4, 0.8, 0.85)
    gradientLayer.locations = locations.map { NSNumber(value: $0) }
    gradientLayer.colors = [UIColor.red.cgColor,
                            UIColor.orange.cgColor,
                            UIColor.green.cgColor,
                            UIColor.green.cgColor,
                            UIColor.gray.cgColor]
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

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

  • @えるまる正确,这就是我答案的最后一句话的意思。 (4认同)
  • 可以使用两次以上以获得适当的比例:) (2认同)