UIViewAnimation(1) | 初心者がiPhoneアプリを作るブログ

初心者がiPhoneアプリを作るブログ

初心者がiPhoneアプリを作るブログです.
入門レベルですので開発初心者にも,できるだけ分かるように丁寧に説明していきます(多分).

アプリを作る上で欠かせないものの一つとしてアニメーションがあります.
これから,アニメーションについて書いたプログラムをだらだら載せます.
研究して下さい.


// アニメーションを書きますよー
// ↓引数はそれぞれnil nil でもいいけど,ここでは与えてみました.どうなるかはお楽しみ
[UIView beginAnimations:@"AnimationTest" context:(__bridge void *)([NSNumber numberWithBool:YES])];
// デリゲートの設定
[UIView setAnimationDelegate:self];
// セレクターの設定(デリゲートの指定してるから,別にやらなくてもいい気がするのですが...この辺りはまだ分かっていません)
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
// アニメーションのスピードの変化の設定.例えば,等速でアニメーションするとか
[UIView setAnimationCurve:ANIMATIONCURVE];
// アニメーションをする時間の設定
[UIView setAnimationDuration:ANIMATIONDURATION];
/*
 * ここに最終的にどんなUIViewの配置にするかを決める
 * それにむけてアニメーションしてくれる,優秀ですね.
 *
 * 例えば,ViewFrameを変えてみましょう
 */
CGRect newFrame = CGRectMake(100, 100, 100, 100);
[self.animationView setFrame:newFrame];
// 実行
[UIView commitAnimations];

さて,大きくコメントをした箇所がありますよね.
そこに,アニメーション後にどういう配置にしたいかを書くことで,
設定した,アニメーションの仕方で動いてくれます.

本当に優秀です.

さて,上記のコード中に「ANIMATIONCURVE」「ANIMATIONDURATION」というものがありますね.

ANIMATIONDURATINOはCGFloatの値を指定してください.
例えば,1.0を指定すると,1秒でアニメーションが完了します.

次にANIMATIONCURVEの所ですが,与えることのできる引数は以下の通りです.
UIViewAnimationCurveEaseIn
UIViewAnimationCurveEaseInOut
UIViewAnimationCurveEaseOut
UIViewAnimationCurveLinear

それぞれ試してみてください.
次に,アニメーションが完了したことを通知する関数をみていきます.
#pragma mark - UIViewAnimationDelegate


- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context{
    NSNumber *flag = (__bridge NSNumber *)context;
    NSLog(@"%@ ,%@, %@", animationID, finished, [flag boolValue] ? @"YES" : @"NO");
}


実行結果は以下のようになります.

2012-09-28 11:02:08.598 AnimationTest[1633:c07] AnimatoinTest ,1, YES


beginAnimationsで設定した引数がちゃんと渡されていることが分かりますね.
contextの設定の仕方が若干難しいですが,慣れれば簡単にできます.

引数の値によってアニメーション後の処理を変化させればいいですね.

Animationについては奥が深いですので,もう少し続きます.

次の記事へ

HOMEに戻る