2

ビューでアニメーションを実行しています。しかし、私はそれに関していくつかの問題に直面しています。ボタンとをしなければなりませstartAnimationStop Animation。imageviewでアニメーションを実行するために、startAnimationボタンのアクションで次のコードを使用しています。

 UIViewAnimationOptions option = UIViewAnimationOptionRepeat + UIViewAnimationOptionAutoreverse;
[UIView animateWithDuration:2.5 delay:0.0 options:option
                 animations:^{
                     CGAffineTransform scale = CGAffineTransformMakeScale(2.0, 2.0);
                     CGAffineTransform translate = CGAffineTransformMakeTranslation(-50.0, -100.0);
                     CGAffineTransform mix = CGAffineTransformConcat(scale, translate);
                     imv.transform = mix; 
                 } 
                 completion:^(BOOL finished) {

                 }
 ];

これは機能しています。今私が直面している問題は次のとおりです。

  1. stopAnimationボタンのアクションでこのアニメーションを停止するにはどうすればよいですか?
  2. ImageViewがアニメーションであり、その後バックグラウンドで入力した場合、再びフォアグラウンドでImageViewがそこに固定され、アニメーション化されません。

これらの問題を解決する方法は?

4

3 に答える 3

5

stopAnimationボタンで、UIViewのレイヤーからアニメーションを削除する必要があります。まず、Quartzcore.frameworkをインポートする必要があります。

#import <QuartzCore/QuartzCore.h>


[yourView.layer removeAllAnimations];

バックグラウンドに移動してフォアグラウンドに戻るときにアニメーションを一時停止するという他の問題については、アニメーションを「一時停止」する方法はありません。最善の策はrestarting、アニメーションによってその状況を手動で処理することです。

于 2012-05-23T07:07:35.887 に答える
2

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

#import <QuartzCore/QuartzCore.h>
...

[imv.layer removeAllAnimations];

アニメーションを再起動することに関しては、それは複雑な問題であり、答えは、アプリケーションが復元するときに何をしたいかによって異なります。考えられる答えの1つは、ImageViewをアニメーション化する場所を追跡し、ApplicationDidEnterBackgroundですべてのアニメーションをキャンセルして、そこに移動することです。その後、復元すると正しい場所に配置されます。

実際にアニメーションを続行したい場合は、他のStack Overflowの回答を読んで、それが役立つかどうかを確認します。

アプリがバックグラウンドから再開したときに中断したアニメーションを復元する

iOS、バックグラウンドから出てきたときにアニメーションを再開する

于 2012-05-23T07:09:17.380 に答える
0

さらに参照するために、応答の2番目の部分では、何かを行う前にマトリックスをIDに復元する必要があります。

imv.transform = CGAffineTransformIdentity;
于 2015-04-25T12:07:54.990 に答える