将 CAGradientLayer 应用于单元格时,如何将其中一个单元格的视图向前移动,使其不受渐变的影响?
When applying CAGradientLayer to a cell, How can I bring one of the cells' views forward so it is not affected by the gradient?
我有一个表格视图单元格,其中有一个文本标签。我使用以下代码对单元格应用了渐变:
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应用的渐变前面?或者如何让标签不受渐变的影响?
为您的单元格创建一个子类并覆盖 layerClass
方法,使其 returns 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]
}
我有一个表格视图单元格,其中有一个文本标签。我使用以下代码对单元格应用了渐变:
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应用的渐变前面?或者如何让标签不受渐变的影响?
为您的单元格创建一个子类并覆盖 layerClass
方法,使其 returns 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]
}