UIBezierPath遣返问题(UIBezierPath Removal Issue)

2019-10-20 02:04发布

我试图做一个游戏,一个球弹离用户绘制的线。 绘制行的代码包含下面和工作正常,但我会如何删除行一旦球与其接触,或玩家只需要画出一个新的生产线?

path = [UIBezierPath bezierPath];
// Start Coords of Line
[path moveToPoint:CGPointMake(pos2x, pos2y)];
[path addLineToPoint:CGPointMake(pos1x, pos1y)];
// End Coords of Line
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.path = [path CGPath];
shapeLayer.strokeColor = [[UIColor whiteColor] CGColor];
shapeLayer.lineWidth = 3.0;
shapeLayer.fillColor = [[UIColor clearColor] CGColor];
[self.view.layer addSublayer:shapeLayer];

提前致谢!

Answer 1:

当你这样说:

[self.view.layer addSublayer:shapeLayer];

......也保持这一形状层中的参考 。 例如,你可能有一个属性currentShapeLayer

self.currentShapeLayer = shapeLayer;

现在你有一个参考,你可以很容易地删除层:

[self.currentShapeLayer removeFromSuperlayer];

编程的iOS是所有关于保持你知道你需要在以后的事情引用。 如果有更多的路径,这意味着更多的形状图层,你将需要显着更复杂的,智能的方式是要删除其中哪一个。



文章来源: UIBezierPath Removal Issue