我使用下面的代码来获得渐变色。但是当我使用该代码时,它会为整个视图控制器着色。它还包括其他内容,如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)
}
答案 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。