将CAGradientLayer应用于单元格时,如何将其中一个单元格的视图向前移动,以使其不受渐变影响?

时间:2015-01-11 06:38:40

标签: ios xcode swift cagradientlayer

我有一个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应用的渐变之前?或者我怎样才能使标签不受渐变的影响?

1 个答案:

答案 0 :(得分:1)

为您的单元格创建一个子类并覆盖layerClass方法,以便它返回CAGradientLayer

然后,不是添加子图层,而是直接将渐变添加到self.layer。您可以在单元格initawakeFromNib方法中执行此操作。

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]

}