如何从屏幕删除线?

时间:2018-01-30 18:35:28

标签: ios swift

我有一系列的线条。

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)

Lines

1 个答案:

答案 0 :(得分:2)

您发布了设置元组数组的代码,然后发布了配置该数组中第一个条目的其他代码,并将其形状图层添加为视图图层的子图层。如果要删除图层,则必须索引到元组数组中,获取图层,然后从视图的图层中删除该图层:

func removeLayerAtIndex(_ index: Int) {
  guard  index < arrayOfLine.count else { return }

  arrayOfLine[index].line.removeFromSuperLayer()
}