正确删除具有渐变的图层

时间:2017-06-07 20:45:25

标签: swift uiview cagradientlayer

我有UICollectionViewCell和UIView,名为 gradientView ,用作标签的背景。

这个UIView需要具有渐变 - 它在单元格的顶部是轻的并且几乎是透明的,并且在单元格的底部变得稍暗(简单的线性渐变)。

所以我创建了一个名为addGradient的func,它接受UIView并为其添加渐变层。

  func addGradient(view : UIView){

    view.backgroundColor = .clear

    let color1 = somecolor1.cgColor
    let color2 = somecolor2.cgColor

    let gradient:CAGradientLayer = CAGradientLayer()
        gradient.frame.size = view.frame.size
        gradient.colors = [color1, color2]

    view.layer.addSublayer(gradient) 
}

在cellForItemAt中,我调用addGradient(cell.gradientView)并显示渐变。但我有两个问题:

1)每个细胞变得越来越暗 - 似乎层叠在一起,我不想要它

2)有时候这种渐变是轻微错位的 - 我也认为这是因为我没有正确删除这些图层

那么我应该如何以及在哪里清除子图层,也许我在cellForItemAt中添加这个渐变的方法是不对的?

1 个答案:

答案 0 :(得分:0)

只是猜测数字1而没有看到更多的代码:将帧更改为边界

 func addGradient(view : UIView){

    view.backgroundColor = .clear

    let color1 = somecolor1.cgColor
    let color2 = somecolor2.cgColor

    let gradient:CAGradientLayer = CAGradientLayer()
        gradient.frame.size = view.bounds.size
        gradient.colors = [color1, color2]

    view.layer.addSublayer(gradient) 
}