UIImageViewアニメーションを一時停止する方法
-
05-07-2019 - |
質問
UIImageViewを使用して表示しているアニメーションがあります:
imageView.animationImages = myImages;
imageView.animationDuration = 3;
[imageView startAnimating];
stopAnimatingを使用して停止できることはわかっていますが、必要なのは、停止できるようにすることです。理由は、stopを呼び出したときにアニメーション画像が表示されないのに対し、ボタンを押したときに最後に表示されていた画像を表示したいからです。
継続時間をもっと大きな数に設定しようとしましたが、それによってすべての画像も消えてしまいます。これを行うには、本当に基本的な方法が必要ですか?
解決 2
うーん...誰も知らないようだから、それは不可能だと思う。
先に進み、 NSTimer
を使用する UIImageView
subview
を使用して、独自の UIView
を作成しました。画像を切り替えます。この利点は、暇なときにタイマーを一時停止および再開できることであり、パフォーマンスは問題にならないようです。
他のヒント
このコードは、アニメーション化されたオブジェクトをアニメーションプロセスの現在の位置で一時停止します。時間や進行状況、または必要なものなど、他の変数を記録する場合、アニメーションを再開するのは非常に簡単です。
UIView *viewBeingAnimated = //your view that is being animated
viewBeingAnimated.frame = [[viewBeingAnimated.layer presentationLayer] frame];
[viewBeingAnimated.layer removeAllAnimations];
//when user unpauses, create new animation from current position.
@oddmeter少し編集:
animatedView.animationImages = images; //images is your array
[animatedView startAnimating];
//Then when you need to pause;
[animatedView stopAnimating]; //Important!!
animatedView.image = [images objectAtIndex: 0];
これでうまくいくはずです: https://developer.apple .com / library / ios /#qa / qa2009 / qa1673.html
基本的に、 CALayer
ベースのアニメーションを一時停止/再開するために必要なことを示します。
UIImageView
制御アニメーションで CALayer
メソッドを使用することに不快感を感じる場合は、常に UIImage
配列ベースのアニメーションを自分で作成できます。必要なコードは非常に短いため、ここから入手できます。 http://rssv2.blogspot.com/2011/04/animating-series-of-images-with-calayer.html
別のオプションは、 animationImages
プロパティだけでなく、imageプロパティを設定することです。これを行うと、 UIImageView
のアニメーションが停止したときに静的画像が表示されます。
クラスが UIImageView
のサブクラスであり、画像の NSMutableArray
を持っていると仮定して、次の手順を実行します。
self.animationImages = images;
//yes, I'm skipping the step to check and make sure you have at least one
//element in your array
self.image = [images objectAtIndex: 0];
最後のアニメーション画像のスクリーンショットを撮って表示できますか?