如何使用3种颜色制作UIView渐变效果

How to make a UIView gradient effect using 3 colors

我也想使用中心色。有人可以帮我解决这个问题吗?

extension UIView {
    func setGradientBackground(topColor: UIColor, bottomColor: UIColor) {
        let gradientLayer       = CAGradientLayer()
        gradientLayer.frame     = bounds
        gradientLayer.colors    = [topColor.cgColor, bottomColor.cgColor]
        gradientLayer.locations = [0.0, 1.0]
        gradientLayer.startPoint    = CGPoint(x: 0.0, y: 0.0)
        gradientLayer.endPoint      = CGPoint(x: 0.0, y: 1.0)
        layer.insertSublayer(gradientLayer, at: 0)
    }
}

只需添加:

gradientLayer.colors = [topColor.cgColor, <centerColor.cgColor>,bottomColor.cgColor]
gradientLayer.locations = [0.0, 0.5, 1.0] //you can remove this line if you want even gradient.

gradientLayer.colorsgradientLayer.locations 不限于每个只有两个输入。

此外,就 startPointendPoint 分别默认为 (0.5,0.0) 和 (0.5,1.0)。你可以在这里参考它的样子:

http://ios-tutorial.com/create-uiview-gradient-background/

您可以使用以下方式添加渐变:

func addGradient(){
    let gradient = CAGradientLayer()
    gradient.frame = self.bounds
    gradient.colors = [UIColor.blue.cgColor,UIColor.red.cgColor,UIColor.green.cgColor]
    gradient.startPoint = CGPoint(x: 0, y: 1)
    gradient.endPoint = CGPoint(x: 1, y: 0)
    gradient.locations = [0,0.5,1]
    self.layer.addSublayer(gradient)
}

//这里self是一个UIView

endPoints 用于 UIView 的边界。这决定了渐变的方向。

locations 用于决定颜色必须位于的位置。