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

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 处插入它作为最底层的原因。

【讨论】:

以上是关于如何在视图控制器的多个视图中添加多个渐变颜色的主要内容,如果未能解决你的问题,请参考以下文章

选择单元格以导航另一个视图控制器类时如何更改渐变单元格图像颜色

如何在不使用单例的情况下在多个视图控制器之间传递数据?

如何在 iPad 的视图控制器中创建多个表格视图?

如何在一个视图控制器中快速将占位符设置为多个文本视图

如何在单个视图中处理多个分段控件的事件

如何将多个委托添加到我的视图控制器?