≫ 逆引きObjective-C for iPhoneアプリ ≫ iPhoneアプリ開発 アニメーション ≫ UIViewアニメーション ≫ UIViewをアニメーションする
UIViewをアニメーションするには大きく分けて以下の2つのやり方があります.
iOS4.0からはブロック構文を利用したメソッド(block-based animation methods)の使用が推奨されていますので,ここでは後者を紹介します.
UIViewのアニメーションで一番シンプルな方法は「animateWithDuration:animations:」メソッドを使用する方法です.
[UIView animateWithDuration:3.0f
animations:^{
// アニメーションをする処理
}];
「animateWithDuration:」にはアニメーションの速度を指定します.
「animations:」ブロック内にアニメーションさせたい処理を記述します.
アニメーションを実行し,そのアニメーションが終了した後に何らかの処理を行う場合は「animateWithDuration:animations:completion:」メソッドを使用すると便利です.
[UIView animateWithDuration:0.1f
animations:^{
// アニメーションをする処理
}
completion:^(BOOL finished){
// アニメーションが終わった後実行する処理
}];
「animateWithDuration:」にはアニメーションの速度を指定します.
「animations:」ブロック内にアニメーションさせたい処理を記述します.
「completion:」ブロック内にアニメーションが終了した後に実行する処理を記述します.
速度の変化などの設定をしてアニメーションを行うには「animateWithDuration:delay:options:animations:completion:」メソッドを使用すると便利です.
[UIView animateWithDuration:0.5f
delay:0.5f
options:UIViewAnimationCurveEaseInOut
animations:^{
// アニメーションをする処理
} completion:^(BOOL finished) {
// アニメーションが終わった後実行する処理
}];
「animateWithDuration:」にはアニメーションの速度を指定します.
「delay:」にはアニメーションの遅延時間を指定します.
「options:」にはアニメーションの加速・減速などのオプションを指定します.
「animations:」ブロック内にアニメーションさせたい処理を記述します.
「completion:」ブロック内にアニメーションが終了した後に実行する処理を記述します.
「options:」に指定可能なオプションはいろいろありますが,代表的なものは以下の通りです.複数のオプションを指定する場合はパイプ(|)で区切って指定します.
| オプション | 意味 |
|---|---|
| UIViewAnimationOptionRepeat | アニメーションを永久に繰り返す |
| UIViewAnimationOptionCurveEaseInOut | 加速して始まり減速して終わり |
| UIViewAnimationOptionCurveEaseIn | 加速して始まる |
| UIViewAnimationOptionCurveEaseOut | 減速して終わる |
| UIViewAnimationOptionCurveLinear | 等速 |
注意.一部のオプションは他に似ているオプションがありますので注意してください.
例えば「UIViewAnimationOptionCurveEaseInOut」は「UIViewAnimationCurveEaseInOut」と間違えやすいので注意が必要です.
「animateWithDuration:delay:options:animations:completion:」メソッドを用いてUIViewをアニメーションするサンプルプログラムを以下に示します.
- (void)viewDidLoad
{
[super viewDidLoad];
// 画像を表示する
UIImage *image = [UIImage imageNamed:@"image01.png"];
UIImageView *imageView = [[UIImageView alloc]initWithImage:image];
imageView.center = CGPointMake(160, 240);
[self.view addSubview:imageView];
// アニメーション
[UIView animateWithDuration:2.5f // アニメーション速度2.5秒
delay:1.0f // 1秒後にアニメーション
options:UIViewAnimationOptionCurveEaseIn
animations:^{
// 画像を2倍に拡大
imageView.transform = CGAffineTransformMakeScale(2.0, 2.0);
} completion:^(BOOL finished) {
// アニメーション終了時
NSLog(@"アニメーション終了");
}];
}
Objective-Cサンプルプログラムの実行結果は以下のようになります(静止画なので分かりにくいのですがアニメーションされ,アニメーション終了後にログに「アニメーション終了」とアウトプットされます).
アニメーション終了
Objective-CでiPhoneアプリを作る際に読んだ本です.よかったら参考にしてみてください.私にとってはかなり役に立ちましたよ!
黒本の通称を持つ良書です.
Objective-Cの基礎となる部分をガッチリ押さえられます.
プログラミング初学者が読むには敷居が高いですが,Objective-Cを仕事で書く人は絶対に読んでおいたほうがいいです.
UIKitの詳細リファレンスとしては最高の書籍だと思います.
UIKitに特化した構成となっており,読み物としてもリファレンスとしても使えます.