我有一个自定义单元格的表格视图,在其视图中,我添加了形状。它在第一次正确显示形状,但在reloadData形状改变后并没有正确显示。为什么会这样? (使用reloadData行的顺序更改)
let cPath = UIBezierPath()
cPath.move(to: centre)
cPath.addArc(withCenter: centre, radius: radius, startAngle: startAngle, endAngle: arc + startAngle, clockwise: true)
// circle shape
let circleShape = CAShapeLayer()
circleShape.path = cPath.cgPath
circleShape.strokeColor = UIColor.black.cgColor
circleShape.fillColor = UIColor.black.cgColor
// add sublayer
cell.pasokhView.layer.addSublayer(circleShape)
答案 0 :(得分:0)
有很多方法可以防止多次添加形状图层(假设这是问题)。
最简单的方法是在添加形状之前检查您的视图图层是否已有子图层(通过其sublayers
属性)。
您也可以在添加新子图层之前删除所有子图层。
另一种选择是在添加图层时将bool标志属性设置为true
,在添加图层之前,请始终检查此标记是否为false。
我不知道任何只对表格视图单元格运行一次的方法(当重复使用单元格时,awakeFromNib
肯定会被多次调用)