Ios 在UIcollectionViewCells上快速绘制线

Ios 在UIcollectionViewCells上快速绘制线,ios,swift,uiview,uicollectionview,uicollectionviewcell,Ios,Swift,Uiview,Uicollectionview,Uicollectionviewcell,我可以在集合视图单元格的每个单元格上绘制线条,但当移动到第三个单元格时,我会在该单元格上再次找到线条 我只想为我在上面画的每一个单元格画一条线,在第三个单元格上再重复一遍。有什么帮助吗 绘制画布 这是我的自定义UIView,具有覆盖绘制功能,可以绘制保存在其上的线 类画布:UIView{ 变量线=[drawLine]() var currentColor:UIColor=UIColor.red 重写函数绘图(rect:CGRect){ //自定义图形 超级绘图(矩形) guard let con

我可以在集合视图单元格的每个单元格上绘制线条,但当移动到第三个单元格时,我会在该单元格上再次找到线条

我只想为我在上面画的每一个单元格画一条线,在第三个单元格上再重复一遍。有什么帮助吗

绘制画布 这是我的自定义UIView,具有覆盖绘制功能,可以绘制保存在其上的线

类画布:UIView{ 变量线=[drawLine]() var currentColor:UIColor=UIColor.red 重写函数绘图(rect:CGRect){ //自定义图形 超级绘图(矩形) guard let context=UIGraphicsGetCurrentContext()else{return} lines.forEach{(line)in context.setStrokeColor(line.color.cgColor) context.setLineWidth(10) context.setLineCap(.round) 对于行点枚举()中的(i,p){ 如果i==0{ 上下文。移动(到:p) }否则{ context.addLine(to:p) } } context.strokePath() } } func changeDrawColor(颜色:UIColor){ self.currentColor=color } 覆盖func TouchesBegind(Touchs:Set,带有事件:UIEvent?){ lines.append(drawLine.init(颜色:currentColor,点:[])) } //在屏幕上移动时跟踪手指 覆盖功能触摸移动(touchs:Set,带有事件:UIEvent?){ guard let point=touch.first?.location(in:nil)else{return} 打印(“点=>\(点)”) guard var lastLine=lines.popLast()else{return} lastLine.points.append(点) 行。追加(最后一行) setNeedsDisplay() } } cellForItemAt

这是我在集合视图中的代码,用于在集合视图中添加单元格项

if(collectionView==self.previewCollectionView){
让cell=collectionView.dequeueReusableCell(带ReuseIdentifier:ImagePreviewcollectionView.identifier,for:indexPath)作为!ImagePreviewcollectionView
cell.ImageView.image=UIImage(名称:String(indexPath.row))
cell.ImageView.layer.cornerRadius=10
cell.ImageView.layer.masksToBounds=true
cell.layer.borderColor=UIColor.red.cgColor
返回单元
}

如果我理解正确,您可以在每个单元格上绘制,但您的图形显示在其他未绘制的单元格上?如果是这样,则需要先清除单元的图形,然后才能重新使用它。在
ImagePreviewcollectionView
类中,我假设您有一个
Canvas
对象,您需要实现
override func prepareforuse(){
并重置该画布上的绘图,使其在tableView重用该单元格时为空。

我解决了在数组中包含绘图点的任何单元格上保存绘图的错误
cellForItemAt
func中,我再次重新绘制线条

I添加self.canvas.lines=[],但仍然在另一个图像中绘制线条