2011-08-04 5 views
4

私は以下の(@PaulSoltzで書かれている)コードを高速でドラッグする速度を実現する方法を理解するのが少し難解です。オブジェクトを画面全体にドラッグすることができます。私はあなたがUIPanGestureRecognizerからvelocityInViewメソッドを使用しなければならないことを理解しています。x速度ベクトルとy速度ベクトルを返します。速度=時間の経過に伴う距離の場合、例えばvelocityx = (x2 - x1)/timeと私はこの式を使って私が必要とするものを得る方法がわかりません。基本的には、自分の動きのスピードを少し速く調整できるようにしたいだけです。たぶん私は思考以上のことですが、誰かがこれを理解するのを助けることができればそれは高く評価されます。ありがとう。UIPanGestureRecognizerでvelocityViewを使用してドラッグを高速化する方法は?

- (void)handlePanGesture:(UIPanGestureRecognizer *)gestureRecognizer { 

    UIView *myView = [gestureRecognizer view]; 

    CGPoint translate = [gestureRecognizer translationInView:[myView superview]]; 


    if ([gestureRecognizer state] == UIGestureRecognizerStateChanged || [gestureRecognizer state] == UIGestureRecognizerStateChanged) { 
     [myView setCenter:CGPointMake(myView.center.x + translate.x, myView.center.y + translate.y)]; 
    [gestureRecognizer setTranslation:CGPointZero inView:[myView superview]]; 
    } 
} 

答えて

0

翻訳ベクトルの成分に何らかの定数を乗算するだけです。

[myView setCenter:CGPointMake(myView.center.x + translate.x * 2, myView.center.y + translate.y * 2)]; 
+0

Okだから、velocityViewはオブジェクトをドラッグする速さや遅さを記録しています。ドラッグして一定の速度にしたいのであれば、定数を掛けるだけです。理にかなっています... –

+1

これは仕事ですが、イメージがあなたの指よりも速く動いて面白そうに見えます。私は実際にあなたの指のスピードに基づいているので、これを実行せずにそれをより速く動かす方法があるとは考えません。 –

関連する問題