渐变子层不透明度

Posted

技术标签:

【中文标题】渐变子层不透明度【英文标题】:Gradient sublayer opacity 【发布时间】:2017-06-26 17:00:46 【问题描述】:

我编写了函数来在我的主视图中插入一个图层(addsubview),我给它 vars 来管理其渐变背景的大小和颜色,不透明度为 1。我插入了一个索引等...

现在,我想通过操作来管理这个渐变(背景)子层的不透明度: 我可以删除它,使用子视图的一般不透明度...但不可能将这个子层的不透明度定位在索引 0。

有什么想法吗?

在我的 viewdidLoad 函数中:

func insertHeader () 
    self.view.addSubview(TopMenuView)
    TopMenuView.frame.size.width = self.view.bounds.size.width

    let gradient:CAGradientLayer = CAGradientLayer()
    let colorTop = UIColor(RGBa).cgColor
    let colorBottom = UIColor(RGBa).cgColor
    //etc

    gradient.opacity = 1.0
    TopMenuView.layer.insertSublayer(gradient, at: 0)



后来,无法针对此子层渐变的不透明度... 我可以管理 TopMenuView.layer 的整个不透明度,但不能管理它的“背景渐变层”

【问题讨论】:

【参考方案1】:

您应该能够创建对渐变层的引用...

class ViewController: UIViewController 

    var topMenuGradient = CAGradientLayer()

    override func viewDidLoad() 
        super.viewDidLoad()

        self.view.addSubview(TopMenuView)
        TopMenuView.frame.size.width = self.view.bounds.size.width

        let colorTop = UIColor(RGBa).cgColor
        let colorBottom = UIColor(RGBa).cgColor
        //etc

        topMenuGradient.frame = TopMenuView.bounds

        topMenuGradient.opacity = 0.5

        TopMenuView.layer.insertSublayer(topMenuGradient, at: 0)
    

    @IBAction func btnTapped(_ sender: Any) 
        topMenuGradient.opacity = 0.1
    


【讨论】:

谢谢。它完美无缺。我不知道为什么我专注于 viewdidLoad 函数并忘记了基础知识:创建一个参考让...没关系。感谢您的帮助。

以上是关于渐变子层不透明度的主要内容,如果未能解决你的问题,请参考以下文章

如何让父层DIV的滤镜效果不影响到子层DIV,就是说避免父层透明度的继承问题

Shader Forge 实现颜色渐变、透明度渐变效果

android标题栏透明度渐变

css中如何使透明度渐变

CSS 实现图片透明度渐变效果

css如何实现图片的透明渐变?