私はiOSアプリケーションのビューにUIPanGestureRecognizerを添付しました。パンハンドラのコードをTouches sample appからコピーしました。ジェスチャーが始まると、私のコード:アニメーションブロックでレイヤーanchorPointを設定すると、ビューがジャンプするのはなぜですか?
- 元のアンカーポイントと中央を記録します。
はそうのように、ユーザの指の周りにあることをアンカーポイントとセンターを変更:
CGPoint locationInView = [gestureRecognizer locationInView:target]; CGPoint locationInSuperview = [gestureRecognizer locationInView:target.superview]; target.layer.anchorPoint = CGPointMake( locationInView.x/target.bounds.size.width, locationInView.y/target.bounds.size.height ); target.center = locationInSuperview;
ジェスチャーが進むにつれて、受け皿ハンドラーは、継続的に指の動きを追跡するための中心を変更します。ここまでは順調ですね。
ユーザーが移動すると、元の開始点に戻るようにビューをアニメーション表示します。そのようなコードは、次のようになります。
そして、元の開始点にビューをアニメーション表示します。ただし、アニメーションが開始される前に、ビューはUIの別の場所にジャンプします。 IOW、手放す、ジャンプする、それはそれが所属する場所に戻る。
私はおそらく、ジェスチャーが始まるときのように、センターをスーパービューの位置に設定してアニメーションの外側にアンカーポイントとセンターを設定する必要があると思ったが、それは違いがないようだ。
私はここで何が欠けていますか?ユーザーが行かなくてもジャンプを防ぐことができますか?
アンカーポイントが理解できていることを確認してください。http://stackoverflow.com/a/22188420/550393 – 2cupsOfTech