2011-08-04 7 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

번역 벡터의 구성 요소에 몇 가지 상수를 곱하면됩니다. velocityView가 얼마나 빨리 또는 개체를 끌어 원하는 경우 그냥 상수로, 방금 곱셈 드래그의 모든 종류를 위해 속도를 일정하게 속도를 추적 있도록

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

좋아? 의미가 있습니다 ... –

+1

이것은 작업을 수행하지만 손가락으로 움직이는 것보다 이미지가 빠르게 움직이게하므로 재미있게 보입니다. 나는 손가락 속도에 기반을두고 있기 때문에 이것을하지 않고 더 빠르게 움직일 수있는 방법이 있다고 생각하지 않습니다. –

관련 문제