2010-12-18 6 views
2

ユーザーの場所を追跡する必要があるカスタムビューがあります。私はtouchesBeganに次のコードを置くだけでなく、touchesMoved中:UIView、animateWithDuration、beginFromCurrentStateのトラブル

[UIView animateWithDuration:0.2 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{ 
    cursorView.center = locationOfTouch; 
} completion:^(BOOL finished){}]; 

それは私にはかなり簡単なようです。ビューがアニメーション化されていても(beginFromCurrentStateオプションのため)、そのビューが常に変更されていても、ビューは常にユーザーの現在の位置にアニメーションされると考えています。

しかし、それぞれのアニメーションは完全に終了します。彼らは新しいアニメーションに「移行」しません。最初は終了しませんし、新しいアニメーションを開始します。

私はtouchesMovedにこの行を追加してみました:

[cursorView.layer removeAllAnimations]; 

は何もしません。アニメーションはキャンセルされません。何か案は?

+0

代わりCATransactionを使用する場合があります、段階的に廃止される

は、あなたがアニメーションでこれをやりたい理由がありますと呼ばれる? –

+0

はい。私は、ビューがタッチの場所に「ジャンプ」しないようにします。私はそれがスムーズにそれにそれをアニメーション化したい。 – Rits

答えて

2

[cursorView.layer removeAllAnimations];あなたはビューのレイヤーにアクセスしますが、アニメーションはレイヤーではなくビューに直接設定しています。
試してみてください。

[UIView beginAnimations:nil context:NULL] 
[UIView setAnimationDuration:0.2]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
cursorView.center = locationOfTouch; 
[UIView commitAnimations]; 

removeAllAnimationsを残し、それが現在の状態から移行する必要があります。

+0

これにiOS 4ブロック方式を使用する方法はありませんか? AppleはiOS 4以降、 'beginAnimations:context:'を使用しないことを勧めましたか? – Rits

+0

"UIViewAnimationOptionBeginFromCurrentState"の強調表示の構文も同じではないと思ったので、fromCurrentStateのない単純なアニメーションのブロックのみを使用することにしました。 (もしあなたが以前のバージョンのiOS4をサポートすることに決めたら、この方法を使う必要があります) –

+0

申し訳ありませんが、私はこれをできるだけ早く試みます。 – Rits

0

これは私が答えたことをあなたが尋ねた別の質問の派生語ですが、同じ考えが適用されます。

これを行うにはブロックを使用する必要はありません。 UIViewアニメーションでsetCenterをラップするだけです。このように:

[UIView beginAnimations:nil context:NULL] 
[UIView setAnimationDuration:0.2f]; 
cursorView.center = locationOfTouch; 
[UIView commitAnimations]; 

0.2秒は非常に高速です。 と表示され、その位置に「ジャンプ」します。確認するには、持続時間を2.0秒に設定してアニメーション化しているかどうかを確認します。

よろしくお願いいたします。

0

技術的には、ビューはデフォルトの0.25秒の時間で自動的にアニメートされます。それはマニュアルが言っていることですが、アニメーションに関してマニュアルがあまり正確でないように私はここにいるのです。ちょうど中央にtouchesMovedがあるたびに設定するのではなくても、beginAnimations呼び出しはあなたが

関連する問題