2017-06-07 65 views
0

我用UIView調用了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) 
} 

Inside cellForItemAt我調用addGradient(cell.gradientView)並顯示漸變。但我有2個問題:

1)每個細胞變得越來越暗 - 似乎層添加一個比另一個,我不希望它

2)有時這種梯度性能稍微放錯了地方 - 我也是認爲這是因爲我沒有正確刪除這些圖層

那麼如何以及在哪裏我應該清除子圖層,也許我的方法在cellForItemAt中添加此漸變是不正確的?

回答

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