Ios 如何沿用户触摸移除CAShapelayer?

Ios 如何沿用户触摸移除CAShapelayer?,ios,objective-c,uibezierpath,uitouch,cashapelayer,Ios,Objective C,Uibezierpath,Uitouch,Cashapelayer,这是我使用CAShapeLayer绘制一条线的代码。不,我喜欢沿着用户拖动移除CAShapeLayer UIBezierPath *path = [UIBezierPath bezierPath]; [path moveToPoint:CGPointMake(touchPoint.x,touchPoint.y)]; [path addLineToPoint:CGPointMake(startingPoint.x,startingPo

这是我使用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


实现这一点没有捷径。您可以尝试以下方法:

  • 您正在寻找一种在接触点移除贝塞尔路径的方法,而不是移除由贝塞尔路径创建的贝塞尔层。一种方法是将贝塞尔点存储在
    阵列中
    ,将接触点与阵列中的点进行比较,然后移除该点并
    用剩余点重新绘制整个贝塞尔路径

  • 与其删除贝塞尔路径,我建议您使用自定义图像/路径绘制一条新的贝塞尔路径,该图像/路径的颜色与视图的背景颜色相似,并将其绘制在
    CAShapeLayer
    上,以便贝塞尔路径被新的贝塞尔路径覆盖


  • 可能重复的请不要为同一个问题发布多个问题,用图片和更新的代码更新原始问题。