9

iOSアプリでキャンセルする必要があるUIViewアニメーションが進行中です。私はこれを試しました:

[self.view.layer removeAllAnimations];

しかし、それはうまくいきませんでした。アニメーションは続きました。これが私のアニメーションコードです:

[UIView animateWithDuration:1.4 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
recognizer.view.transform = CGAffineTransformTranslate(recognizer.view.transform, translation.x, translation.y);
} completion:^(BOOL finished) {

            NSLog(@"completed animation, now do whatever");
        }];

なぜそれが機能しないのかについて誰かが何か考えを持っていますか?

4

2 に答える 2

11

そのアニメーションをレコグナイザーのビューに追加しているため、同じビューのレイヤーからアニメーションを削除する必要があります。

だから代わりに

[self.view.layer removeAllAnimations];

あなたがしたいかもしれません

[recognizer.view.layer removeAllAnimations];

また、変換の現在のステータスを維持するには、プレゼンテーション層からそのステータスを取得します。プレゼンテーション層は、アニメーション中の変更を実際に反映する層です。

recognizer.view.layer.transform = recognizer.view.layer.presentationLayer.transform;
于 2012-09-15T20:30:59.040 に答える
3

わかりました-ちょうどそれを理解しました。アニメーション化されたコンポーネントを、画像ビューの上部にあるジェスチャ認識機能から画像ビュー自体に変更しました。さて、アニメーションを停止するコードの直前に、私は持っています:

 truckView.frame = [[trackView.layer presentationLayer] frame];
 [truckView.layer removeAllAnimations];

だから、これはそれを行う方法です。この答えに私を導いてくれた助けに感謝します、

サム

于 2012-09-16T09:19:33.720 に答える