我有一系列的线条。
var arrayOfLine : [(line: CAShapeLayer, linePath: UIBezierPath,
point1 : CGPoint, point2 : CGPoint)] =
[(CAShapeLayer(), UIBezierPath(), CGPoint.zero, CGPoint.zero),
(CAShapeLayer(), UIBezierPath(), CGPoint.zero, CGPoint.zero),
(CAShapeLayer(), UIBezierPath(), CGPoint.zero, CGPoint.zero)]
这是我绘制其中一条线的方式。
func drawing(index : Int)
{
if index == 0
{
arrayOfLine[0].point1 = CGPoint(x: 40, y: self.view.frame.height/2)
arrayOfLine[0].point2 = CGPoint(x: self.view.frame.width - 40, y: self.view.frame.height/2)
arrayOfLine[0].linePath.move(to: arrayOfLine[0].point1)
arrayOfLine[0].linePath.addLine(to: arrayOfLine[0].point2)
arrayOfLine[0].line.path = arrayOfLine[0].linePath.cgPath
arrayOfLine[0].line.strokeColor = UIColor.lightGray.cgColor
arrayOfLine[0].line.lineWidth = 1
arrayOfLine[0].line.lineJoin = kCALineJoinRound
self.view.layer.addSublayer(arrayOfLine[0].line)
}
}
我想删除一行,但它不会从屏幕上消失。我需要做什么?
arrayOfLine.remove(at: 0)
答案 0 :(得分:2)
您发布了设置元组数组的代码,然后发布了配置该数组中第一个条目的其他代码,并将其形状图层添加为视图图层的子图层。如果要删除图层,则必须索引到元组数组中,获取图层,然后从视图的图层中删除该图层:
func removeLayerAtIndex(_ index: Int) {
guard index < arrayOfLine.count else { return }
arrayOfLine[index].line.removeFromSuperLayer()
}