2

ユーザーのスワイプに基づいて画面上を移動する UIImageView があります。Core Animation を使用してこれを実現します。

 [UIView beginAnimations:nil context:nil];
 [UIView setAnimationDuration:1.0];

 movingView.frame = theRect;

 [UIView commitAnimations];

常に問題なく開始されますが、元の場所から「theRect」の場所に移動する途中で停止し、UIImageView が開始点に戻ります。それは決して同じポイントではありません。ジャンプバックする前にほぼ完全に通過することもあれば、ほとんど動かずにジャンプバックすることもあります。この後、他のコードは実行されません。期間を変更してみましたが、問題ないようです。

追加すると:

 [UIView setAnimationDidStopSelector:@selector(completeAnimation:finished:context:)];
 [UIView setAnimationDelegate:self];

その後、実際には Duration が完了するまで遅延し、セレクターを実行します。これは、画像自体が停止してすぐに開始点に戻った場合でも同様です。

うまくいけば、誰かがここで何が起こっているのかについてのヒントを教えてくれます.

4

1 に答える 1

1

自動レイアウトを使用する場合、フレームの変更をアニメーション化するのではなく、制約の変更をアニメーション化できます (制約が再適用されると、元の位置が復元されるため)。例については、上にスライドするように画像ビューをアニメーション化するを参照してください。

于 2013-01-12T03:03:03.587 に答える