4

画像があります。その画像をパスに沿ってドラッグしたいと思います。パスは円形または長方形にすることができます。画像がタッチされてドラッグされている場合、画像はパスに沿って移動するだけで、パスを離れることはできません。Core GraphicsとCoreAnimationsを使用してみましたが、正しい方法が見つかりません。ネットで検索しましたが、パスに沿ってオブジェクトを移動する方法が常に表示されます。パスに沿ってオブジェクトをドラッグすることについては何も見つかりません。また、UIBezierPathからポイントを抽出するためのAppleが提供するNOメソッドであることがわかりました。

とにかくこれを行うのですか?

4

1 に答える 1

0

UIBezierPathクラスには、と呼ばれるインスタンスメソッドがあります- (BOOL)containsPoint:。この方法と2UIBezierPath秒で、オブジェクトがパスに沿って移動しているかどうかを確認できます。

+---------+
|xxxxxxxxx|
|x+-----+x|
|x|     |x|
|x|     |x|
|x|     |x|
|x+-----+x|
|xxxxxxxxx|
+---------+

ここでの秘訣は、両方のパスが共通の中心を持つようにしながら、1つのパスを最初のパスよりもわずかに小さくすることです(おそらく2ピクセル)。オブジェクトが移動する必要のあるパス/ルートは、を呼び出すことで得られるベジェパスの領域の差になります- (BOOL)containsPoint:

オブジェクトが大きいオブジェクトに含まれてUIBezierPathいるが小さいオブジェクトには含まれていない場合は、正しいパスにいることがわかります。

于 2012-10-03T23:17:38.353 に答える