井原プロダクトのBLOG

Since 2013。個人でアプリ作っています。

UIAnimation実行中に画面移動して戻ってくるとAnimationが止まっている件

こんなの基本なんだろうけど、ハマった件。

UIAnimationでVIewを点滅させていたのですが、他のViewをmodalで表示して戻ってくるとAnimatioが止まってしまう。なので、再度VIewDidAppearとかでAnimationを設定するのだけど動かない。はてさて、なぜか?

理由は、わかってみると当たり前で、UIViewを元の状態に戻さないことにありました。以下のコードは、Viewを赤=>白に変化させるAnimationですが、Viewを移動すると赤=>白に変化した状態で画面遷移します。その状態で元のViewに戻ってきてAnimatioを起動しても 白=>白の変化しかしないので、動いていない様に見えるわけ。なので一旦赤に戻す必要があるので、AnimationのComplitionに、元に戻す処理を書きます。

f:id:ihatomo:20161229102400p:plain

- (void)viewDidLoad {
    [super viewDidLoad];
    //ここでは特になにもしない
  }


-(void) viewDidAppear:(BOOL)animated {
    //任意のオプション
    UIViewAnimationOptions myOption =
    UIViewAnimationOptionCurveLinear //等速
    | UIViewAnimationOptionRepeat ; //繰り返し
    //Animation登録
    [UIView animateWithDuration:1.0 // アニメーションの秒数
                          delay:0.0 // 開始までの秒数
                        options:myOption
                     animations:^{
                         _testView.backgroundColor = [UIColor whiteColor]; //プロパティの設定
                     }
                     completion:^(BOOL finished){ _testView.backgroundColor = [UIColor redColor]; }];
    
}