2012-02-27 7 views
2

私はこのコードでビューを移動していますが、動いていますが、時には非常に不安定です。UIPanGestureRecognizerでうまく動いていますが、時には跳ね上がります

[[[(UITapGestureRecognizer*)sender view] layer] removeAllAnimations]; 

[self.view bringSubviewToFront:[(UIPanGestureRecognizer*)sender view]]; 
CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:self.view]; 

if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) { 

    firstX = [[sender view] center].x; 
    firstY = [[sender view] center].y; 
} 

translatedPoint = CGPointMake(firstX+translatedPoint.x, firstY+translatedPoint.y); 

[[sender view] setCenter:translatedPoint]; 

if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) { 

    CGFloat finalX = translatedPoint.x + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].x); 
    CGFloat finalY = translatedPoint.y + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].y); 


[UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:.35]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
    [[sender view] setCenter:CGPointMake(finalX, finalY)]; 
    [UIView commitAnimations]; 

答えて

1

パン遅くなり上記のコードで何かのように見えるdoesntの。 UIの遅い応答は、再描画による時間の99%です。パニングしているビューのdrawRectコード(実装している場合)を見てください。これがパンするたびに呼び出されると、問題が発生している可能性があります。これは、ビューでrasterizeプロパティをYESに設定することで解決できます。

関連する問題