如何在视图控制器中的多个视图中添加多个渐变颜色

时间:2018-04-08 10:57:44

标签: ios swift cagradientlayer

我使用下面的代码来获得渐变色。但是当我使用该代码时,它会为整个视图控制器着色。它还包括其他内容,如textfield,label等。我想在视图控制器中使用多个渐变颜色的多个视图。假设我在视图控制器中有三个视图,我想在三个不同的视图中使用三种不同的渐变颜色。标签和文本字段等内容将显示在渐变颜色上。

这是我的代码:

func setBackground_view() {
    let gradientLayer = CAGradientLayer()
    let colorTop =  UIColor(red: 44/255.0, green: 156/255.0, blue: 56/255.0, alpha: 1.0).cgColor
    let colorBottom = UIColor(red: 155/255.0, green: 180/255.0, blue: 23/255.0, alpha: 1.0).cgColor

    gradientLayer.colors = [ colorTop, colorBottom]
    gradientLayer.startPoint = CGPoint(x: 1.0, y: 0.5)
    gradientLayer.endPoint = CGPoint(x: 0.0, y: 1.0)
    gradientLayer.frame = self.view.bounds
    self.view.layer.addSublayer(gradientLayer)
    self.view.layer.insertSublayer(gradientLayer, at: 0)
    view.layer.addSublayer(gradientLayer)
}

2 个答案:

答案 0 :(得分:0)

您在示例中所做的是将渐变应用于true,这基本上是整个self.view的根视图。不仅如此,您还可以将相同的渐变应用到ViewController 多次次。

您想要的是将渐变应用于每个元素,而不是self.view本身。

假设您有self.view,那么只需应用渐变,而是将其直接应用到所需的对象上。

UITextfield

依此类推。

注意: 请记住将不同的渐变应用于适当的视图,否则所有渐变都将是相同的。

答案 1 :(得分:0)

您正在使用

添加子图层3次
self.view.layer.addSublayer(gradientLayer)
self.view.layer.insertSublayer(gradientLayer, at: 0)
view.layer.addSublayer(gradientLayer)

只做

func setBackground_view() {
    let gradientLayer = CAGradientLayer()
    let colorTop =  UIColor(red: 44/255.0, green: 156/255.0, blue: 56/255.0, alpha: 1.0).cgColor
    let colorBottom = UIColor(red: 155/255.0, green: 180/255.0, blue: 23/255.0, alpha: 1.0).cgColor

    gradientLayer.colors = [ colorTop, colorBottom]
    gradientLayer.startPoint = CGPoint(x: 1.0, y: 0.5)
    gradientLayer.endPoint = CGPoint(x: 0.0, y: 1.0)
    gradientLayer.frame = self.view.bounds
    view.layer.insertSublayer(gradientLayer, at: 0)
}

基本上,您希望gradientLayer低于视图控制器中添加的所有其他视图,这就是您将其作为最底层插入的原因,方法是将其插入索引0。