我正在尝试在每个集合视图单元格上添加50%黑色Alpha视图。收集视图单元格的顶部有背景图片和文字。希望叠加视图位于两者之间。

在我的cellForItemAt方法中,使用以下命令:

let overlayView = UIView()
overlayView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5)
overlayView.frame = cell.bounds
cell.addSubview(overlayView)

问题是当我向下滚动然后向上滚动时,叠加层不断增加,使Alpha值比50%暗得多。此外,overlayView已添加到我的文本上方(我需要在文本下方。)

如何防止覆盖叠加多次,并将其添加到单元格的正确层之间?

最佳答案

发生这种情况是因为您的单元已出队并多次重复使用,因此,您要添加多个层。

将此代码放入您的单元格类中

override func awakeFromNib() {
    super.awakeFromNib()
    let overlayView = UIView()
    overlayView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5)
    overlayView.frame = self.bounds
    self.addSubview(overlayView)
}

或者,如果您想获得相同的结果,则可以设置黑色backgroundColor并将imageView的alpha设置为50%
cell.backgroundColor = .black
cell.imageView.alpha = 0.5

10-08 17:56