我有一个tableview单元格,其中包含文本标签。我使用以下代码对单元格应用了渐变:
if(cell.layer.sublayers.count == 2){
let gradientLayer = CAGradientLayer()
gradientLayer.colors = [UIColor.clearColor().CGColor, UIColor(red: 0, green: 0, blue: 0, alpha: 1.0).CGColor]
gradientLayer.locations = [0.6, 1.0]
gradientLayer.frame = cell.bounds
cell.layer.insertSublayer(gradientLayer, atIndex: UInt32(1))
}
单元格由图像视图和标签组成。我考虑过将渐变添加到imageView,但是因为我在imageView中使用了视差效果,所以在滚动时会导致渐变移动到位。
如何将标签放在CAGradientLayer应用的渐变之前?或者我怎样才能使标签不受渐变的影响?
答案 0 :(得分:1)
为您的单元格创建一个子类并覆盖layerClass
方法,以便它返回CAGradientLayer
。
然后,不是添加子图层,而是直接将渐变添加到self.layer
。您可以在单元格init
或awakeFromNib
方法中执行此操作。
override class func layerClass() -> AnyClass {
return CAGradientLayer.self
}
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier!)
let gradientLayer: CAGradientLayer = self.layer as CAGradientLayer
gradientLayer.colors = [UIColor.clearColor().CGColor, UIColor(red: 0, green: 0, blue: 0, alpha: 1.0).CGColor]
gradientLayer.locations = [0.6, 1.0]
}