【问题标题】:How to Remove CAShapelayer along user touch?如何沿用户触摸删除 CAShapelayer?
【发布时间】:2016-02-03 12:33:47
【问题描述】:

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

【问题讨论】:

标签: ios objective-c uibezierpath uitouch cashapelayer


【解决方案1】:

没有直接的方法可以实现这一点。您可以尝试以下方法:

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

  2. 建议您使用与视图背景颜色相似的颜色的自定义图像/路径绘制新的贝塞尔路径,而不是删除贝塞尔路径,并将其绘制在 CAShapeLayer ,以便贝塞尔路径被新的贝塞尔路径覆盖。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-17
    • 2023-04-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多