Swift 正确删除带有渐变的图层

Swift 正确删除带有渐变的图层,swift,uiview,cagradientlayer,Swift,Uiview,Cagradientlayer,我有一个UICollectionViewCell,其UIView名为gradientView,用作其上标签的背景 此UIView需要有渐变-它在单元格顶部是浅色的,几乎是透明的,在单元格底部会稍微变暗(简单的线性渐变) 所以我创建了名为addGradient的func,它采用UIView并向其中添加带有渐变的层 func addGradient(view : UIView){ view.backgroundColor = .clear let color1 = somec

我有一个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的猜测,而没有看到更多代码:将帧更改为边界

 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) 
}