【问题标题】:UITableViewCell stacking layersUITableViewCell 堆叠图层
【发布时间】:2020-08-25 22:59:03
【问题描述】:

我有一个包含图像的自定义UITableViewCell,我向UIImageView 添加了一个扩展,它添加了一个图层以覆盖较浅的颜色。

func overlay(widht: CGFloat, height: CGFloat, color: UIColor) {
    let colorOverlay = CALayer()
    colorOverlay.frame = CGRect(x: 0, y: 0, width: widht, height: height)
    colorOverlay.backgroundColor = color.cgColor
    
    self.layer.addSublayer(colorOverlay)
    self.layer.masksToBounds = true
}

这里的问题是,每次重复使用单元格时,都会添加层,因此它们会堆叠起来,直到图像不再可见,可见的只是一个灰色矩形

self.image.overlay(widht: self.image.frame.width, height: self.image.frame.height, color: UIColor.gray)

如何防止图层堆叠?或者如何在不使用可重复使用单元格的CALayer() 的情况下为图像添加叠加颜色

【问题讨论】:

    标签: ios swift uitableview overlay calayer


    【解决方案1】:

    问题应该是每次配置单元格时都将叠加层添加到图像视图中。请记住,如果适用,UITableView 会重用相同的单元格实例。通过什么来控制你的视觉输出是完全开放的。但是请确保您的代码是否运行两次不会导致任何差异或限制该段代码只执行一次是您应该关注的重点。

    【讨论】:

    • 有什么方法可以将 CALayer 添加到可重复使用的单元格内的图像中,每次重复使用单元格时都不会应用?我正在考虑使用标志,但我可以在哪里使用它?里面cellForRowAt?
    猜你喜欢
    • 2018-12-03
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    相关资源
    最近更新 更多