2009-05-21 4 views
1

イメージをドラッグして特定のパスに沿って移動を制限する方法を理解しようとしています。iphone cocoa:パスに沿ってイメージをドラッグする方法

私はパスに沿ってアニメーションを含むいくつかのトリックを試してみましたが、再生し、一時停止し、逆方向に再生するアニメーションを得ることができなかった - それは問題外と思われるようにします。

アイデア?誰でも ?あなたは基本的に何をしようとして

+0

Hey..didを... –

+0

ねえ、あなたは私があなたが持っているように同じ問題を抱えている私を助けてください、それを考え出しました。 –

答えて

3

は「翻訳」遷移にマッチ指の動きです。

ユーザーがタッチして指を動かすと、現在のタッチポイント値を使用してUIImageViewに適用される変換トランスフォームを作成します。ここでは、あなたがそれを行うだろう方法は次のとおりです。

  1. タッチダウンで、ImageViewのの開始のx、yの位置を保存します。移動に

  2. 、新しいものに古いポイントからデルタを計算します。ここで値を固定することができます。だから、yの変更を無視し、xのデルタだけを使うことができます。これは、画像が左から右に移動することを意味します。 xを無視してyを使用すると、上下に移動するだけです。

  3. 計算された/固定されたx、y値を取得したら、CGAffineTransformMakeTranslation(x、y)を使用して新しい変換を作成します。この変換をUIImageViewに割り当てます。画像がその場所に移動します。

  4. 指が持ち上げられたら、元の開始点x、y、点、リフトオフ点からデルタを計算し、ImageViewの境界線を調整して変換をCGAffineTransformIdentityにリセットします。これはオブジェクトを移動するのではなく、ImageViewへのその後のアクセスが実際の位置を使用し、変換の調整を続ける必要がないようにオブジェクトを設定します。

グリッド上での移動も簡単です。手順2でx、yの値を四捨五入して、変換の変換を行う前にグリッドサイズの倍数(つまり、10ピクセルごとに四捨五入)を渡します。

あなたはそれが余分にスムーズにしたい場合は、あなたがUIViewのアニメーションブロックと移行を割り当てるコードを囲みます。イージングとタイミングの設定を混乱させる。画像は少し後ろにドラッグする必要がありますが、スムーズに1つのタッチポイントから次のタッチポイントまで「ラバーバンド」にする必要があります。

+0

あなたはちょうどいいですね。でも、トランスフォームをつぶす代わりに 'position'を設定したいと思うかもしれません。 –

1

このサンプルコードを参照してください:あなたはそれを行うにはどのようにそれを考え出しMove Me

関連する問題