2016-02-03 47 views
-1

這是我的編碼來繪製使用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

+0

的【如何沿用戶拖動刪除CAShapeLayer?](http://stackoverflow.com/questions/35053624/how-to-remove-cashapelayer-along-user-drag) – Hamish

+0

請不要可能的複製」 t針對同一問題發佈多個問題,用圖像和更新後的代碼更新原始問題。 – Hamish

回答

1

有沒有直接的方法做到這一點。你可以嘗試以下方法:

  1. 而不是刪除其由bezier -path創建的CAShapeLayer,你正在尋找一種方法,以消除在觸摸點的貝塞爾路徑。一種方法是貝塞爾點存儲在一個array,並在陣列中比較所述觸摸點的點和去除點與redraw整個貝塞爾路徑與其餘點。

  2. 我建議您不要去掉貝塞爾路徑,而是使用與您的視圖的背景色相似的顏色的自定義圖像/路徑繪製新的貝塞爾路徑,然後在CAShapeLayer上繪製它,以便貝塞爾路徑被新的貝塞爾路徑所覆蓋。