4

現在「kresta app」のようなアプリを開発中です。まず、フォト ギャラリーから画像を選びました。次に、ユーザーがブラインドとシェードを適用する領域を選択できるようにします。だから私がやりたいのは、4 つのピンがあり、ユーザーがピンをタッチしてドラッグして領域を選択できるようにすることです。以下のコードでこのロジックを実装しました。

ここに画像の説明を入力jpg

タッチ移動で私はこのメソッドを呼び出しました

 UIBezierPath *aPath = [UIBezierPath bezierPath];

// Set the starting point of the shape.
   [aPath moveToPoint:pinImageView1.center];
// Draw the lines.
[aPath addLineToPoint:pinImageView2.center];
[aPath addLineToPoint:pinImageView3.center];
[aPath addLineToPoint:pinImageView4.center];
[aPath closePath];

CAShapeLayer *square = [CAShapeLayer layer];
square.path = aPath.CGPath;
[pickedImageView.layer addSublayer:square];

私の問題は、レイヤーを追加するたびです。このロジックを実装するにはどうすればよいですか? 前のレイヤーを削除して新しいレイヤーを更新する方法はありますか? または私のやり方が間違っている場合は、このロジックを実装する他の方法を提案してください。

4

1 に答える 1

1

これへの参照をCAShapeLayerクラス プロパティに保存すると、そのpathプロパティを何度も更新するだけで、ビューのレイヤーのサブレイヤーが自動的に更新されます。そのため、addSublayer一度、そして将来、画面上で画像をオーバーレイする形状の変更を反映したいときはいつでもpath、このために を更新するだけです。CAShapeLayer

于 2013-08-07T04:40:30.787 に答える