每当我的isLive函数返回true时,我都试图向图像视图添加底部边框。我检查了该部分,并且只执行了一次。但是,有多个单元格的底部边框为蓝色。该代码如下所示:
DispatchQueue.main.async {
if CommunityViewController().isLive(startTime: startTime, endTime: endTime, name: self.cellChannel[indexPath.row].communityName){
cell.imageView.addBottomBorderWithColor(color: constants.waterblue, width: 3)
}
}
我的addBottomBorderWithColor是扩展,看起来像这样:
func addBottomBorderWithColor(color: UIColor, width: CGFloat) {
let border = CALayer()
border.backgroundColor = color.cgColor
border.frame = CGRect(x: 0, y: self.frame.size.height - width, width: self.frame.size.width, height: width)
self.layer.addSublayer(border)
}
据我所知,我需要删除prepareForReuse函数中的底部边框。我试图用其他扩展名将其删除:
func removeBottomBorderWithColor(color: UIColor, width: CGFloat) {
let border = CALayer()
border.backgroundColor = color.cgColor
border.frame = CGRect(x: 0, y: self.frame.size.height - width, width: self.frame.size.width, height: width)
self.layer.addSublayer(border)
border.removeFromSuperlayer()
}
prepareForReuse是正确的方法还是我需要以其他方式设置它?
我通过以下方式调用prepareForReuse:
override func prepareForReuse() {
self.imageView?.removeBottomBorderWithColor(color: constants.waterblue, width:3)
}
最佳答案
self.imageView?.layer.sublayers?.forEach { $0.removeFromSuperlayer() }
尝试将这段代码直接用于准备重用方法。在cellForItemAtIndexPath方法中添加图层。