如何在用户触摸时删除CAShapelayer?

时间:2016-02-03 12:33:48

标签: ios objective-c uibezierpath uitouch cashapelayer

这是我使用CAShapeLayer绘制线条的编码。我想在用户拖动时删除CAShapeLayer。

UIBezierPath *path = [UIBezierPath bezierPath];
                [path moveToPoint:CGPointMake(touchPoint.x,touchPoint.y)];
                [path addLineToPoint:CGPointMake(startingPoint.x,startingPoint.y)];

                shapeLayer = [CAShapeLayer layer];
                shapeLayer.lineCap=kCALineCapSquare;
                shapeLayer.path = [path CGPath];
                shapeLayer.lineWidth = single.width;
                shapeLayer.fillColor = [[UIColor redColor] CGColor];
                [self.layer addSublayer:shapeLayer];
                [clearBeizer addObject:shapeLayer];

这是我期望的截图:

this is user touched places

现在我想像用户一样删除cashapelayer

enter image description here

1 个答案:

答案 0 :(得分:1)

没有直接的方法来实现这一目标。您可以尝试以下方式:

  1. 您正在寻找一种在触点处移除贝塞尔路径的方法,而不是删除由CAShapeLayer - 路径创建的bezier。一种方法是将贝塞尔点存储在array中,并将触摸点与数组中的点进行比较,然后删除点和redraw整个贝塞尔路径与剩余点。

  2. 我建议你不要删除bezier路径,而是使用自定义图像/路径绘制一个新的bezier路径,该路径的颜色与视图的背景颜色相似,并在{{1因此bezier路径被新的bezier路径覆盖。