【问题标题】:Deleting layers with gradient properly正确删除带有渐变的图层
【发布时间】:2017-06-07 20:45:25
【问题描述】:

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

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

所以我创建了一个名为 addGradient 的函数,它接受 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 中添加此渐变的方法不正确?

【问题讨论】:

    标签: swift uiview cagradientlayer


    【解决方案1】:

    只是猜测数字 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) 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      • 2011-06-21
      相关资源
      最近更新 更多