UIView アニメーション

UIViewのクラスメソッドを使ったAnimation処理についてです。

パターンとして,2つ存在しますが, いずれもUIViewのクラスメソッドのはずです。iOS4.0以降では, Blockを使ったanimateWithDurationをおすすめしているようですが…

1. beginAnimations, commitAnimations

setAnimationCurve

アニメーションの動きを指定できます。

[UIView setAnimationCurve:UIViewAnimationCurve.UIViewAnimationCurveEaseIn];

UIViewAnimationCurveというのが動作になります。

UIViewAnimationCurve Description
UIViewAnimationCurveEaseInOut 加速して始まり減速して終わり
UIViewAnimationCurveEaseIn 加速して始まる
UIViewAnimationCurveEaseOut 減速して終わる
UIViewAnimationCurveLinear 等速

サンプル

CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelegate:self]; // Where is end deletegate
[UIView setAnimationDidStopSelector:@selector(finishAnimation)];
[UIView setAnimationCurve:UIViewAnimationCurve.UIViewAnimationCurveEaseIn];
// Here is animation Operration
CGAffineTransform t3 = CGAffineTransformScale(view.transform, 2.0, 0.5);
view.transform = t3;
[UIView commitAnimations];
- (void)finishAnimation
{
    NSLog(@"Animation Done!");
}

setAnimationDidStopSelector では, 終了時のメソッドがしてできます。setAnimationDelegateでクラスの指定が必要です。

2. animateWithDuration:animations
ここでもいくつかの形があります。

[UIView animateWithDuration:5.0f
                 animations:^{
                     // Processing
                 }];

最初の引数はAnimationする時間です。 animationsブロックにアニメーションの処理を書きます。

[UIView animateWithDuration:0.1f
	animations:^{
                     // Processing
    }
    completion:^(BOOL finished){
                     // After finishing
}];

アニメーションのオプションを追加した場合

UIView animateWithDuration:2.5f
                          delay:1.0f
                        options:UIViewAnimationOptionCurveEaseIn
                     animations:^{
                         // Processing               
                     } completion:^(BOOL finished) {
                         // Finish
                     }];

オプションは, beginAnimationsの場合と同じです。