这是我使用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];
这是我期望的截图:
现在我想像用户一样删除cashapelayer
答案 0 :(得分:1)
没有直接的方法来实现这一目标。您可以尝试以下方式:
您正在寻找一种在触点处移除贝塞尔路径的方法,而不是删除由CAShapeLayer
- 路径创建的bezier
。一种方法是将贝塞尔点存储在array
中,并将触摸点与数组中的点进行比较,然后删除点和redraw
整个贝塞尔路径与剩余点。
我建议你不要删除bezier路径,而是使用自定义图像/路径绘制一个新的bezier路径,该路径的颜色与视图的背景颜色相似,并在{{1因此bezier路径被新的bezier路径覆盖。