代码之家  ›  专栏  ›  技术社区  ›  MegaManX

用4种颜色和小交点创建渐变?

  •  0
  • MegaManX  · 技术社区  · 4 年前

    这里有很多关于如何创建多色渐变的问题,但我正在努力创建渐变区域较小的渐变。例如,我想在视图上显示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)
    

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

    enter image description here

    我无法解决这个问题。有什么解决方案吗?

    0 回复  |  直到 4 年前
        1
  •  5
  •   matt    4 年前

    使用绿色 两次 按照颜色的顺序。红、橙、绿、灰。现在,您可以在中间有一个大的实心绿色,在其两侧有一个薄的过渡。示例:

        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]
    

    enter image description here

    这是一般原则;你可以随意调整。