2

オプションを使用する UIView アニメーション ブロックがあるUIViewAnimationOptionRepeat | UIViewAnimationOptionAutoReverseので続行しますが、いくつかの時点でアニメーションを停止する必要がありますが、さらに重要なことはアニメーションを停止してビューを元の位置に戻すことです。

試してみ[dot1.layer removeAllAnimations];ましたが、元の位置に戻らずにトラックで停止し、アニメーションの途中で停止します。

私はそれを停止してから、2番目のアニメーションを実行して正しいフレームに戻そうとしましたが、どのくらいの期間でどこまで行く必要があるのか​​わからないため、少しぎくしゃくする可能性があります.

途中ではなく、最後のサイクルが完了した後にアニメーションを停止させることは可能ですか?

ありがとう。

4

2 に答える 2

1

これを試してください:

[UIView animateWithDuration:2 delay:0 options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction animations:^
{
    view.frame = CGRectMake(0, 100, 200, 200);
} completion:^(BOOL finished)
{
    if(! finished) return;
}];

アニメーションを停止するには、次を使用します。

[view.layer removeAllAnimations];
于 2013-03-01T11:10:26.243 に答える
0

受け入れられた解決策を試しましたが、うまくいきませんでした。アニメーションは、1回実行しただけで停止しました。ネットを掘り下げると、それがアニメーションを停止するための推奨される方法であると私は信じる[self.view.layer removeAllAnimations]ようになります(別の方法は、受け入れられた解決策に対する質問者のコメントとして次のリンクで見ることができます

BOOL / 完了ブロックを使用して、自動反転 / 無限リピート UIView アニメーションを停止します。

私のために働いた方法は、BooRanger によって与えられたものでした (jrturton でさえそれを受け入れました)。クラスに stopAnimations というブール値のプロパティを設定し、その値を NO に初期化します。アニメーションを停止したいときはいつでも、stopAnimations を YES に設定[self.view.layer removeAllAnimations]し、次の行で呼び出します。次に、完了ブロックで次のことを行います。

if(self.stopAnimations){
self.finishAnimations = NO;
return;
}

これが誰かに役立つことを願っています。:)

于 2014-08-23T04:46:29.753 に答える