如何在视图控制器的多个视图中添加多个渐变颜色
Posted
技术标签:
【中文标题】如何在视图控制器的多个视图中添加多个渐变颜色【英文标题】:How to add multiple gradient color in multiple views in a view controller 【发布时间】:2018-04-08 10:57:43 【问题描述】:我将下面的代码用于渐变颜色。但是当我使用该代码时,它会为整个视图控制器着色。它还涵盖了其他内容,例如文本字段、标签等。我想在视图控制器中使用具有多种渐变颜色的多个视图。假设我在一个视图控制器中有三个视图,我想在三个不同的视图中使用三种不同的渐变颜色。标签和文本字段等内容将出现在渐变颜色上。
这是我的代码:
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)
【问题讨论】:
【参考方案1】:您在示例中所做的是将渐变应用于self.view
,这实际上是整个ViewController
的根视图。不仅如此,您还将相同的渐变应用到 self.view
multiple 次。
您想要的是将渐变单独应用于每个元素,而不是 self.view
本身。
假设你有一个UITextfield
,然后像你已经做的那样应用渐变,而是直接将它应用到所需的对象上。
textField.layer.insertSublayer(gradientLayer, at: 0)
anyOtherView.layer.insertSublayer(differentGradient, at: 0)
等等等等。
注意: 请记住将不同的渐变应用到其相应的视图中,否则所有渐变都将相同。
【讨论】:
【参考方案2】:您正在使用
添加子层 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 处插入它作为最底层的原因。
【讨论】:
以上是关于如何在视图控制器的多个视图中添加多个渐变颜色的主要内容,如果未能解决你的问题,请参考以下文章