逆引きObjective-C for iPhoneアプリ

≫ 逆引きObjective-C for iPhoneアプリ ≫ iPhoneアプリ開発 アニメーション ≫ UIViewアニメーション ≫ UIViewをアニメーションする

UIViewをアニメーションする

UIViewをアニメーションするには大きく分けて以下の2つのやり方があります.

  • 「beginAnimations:context:」メソッドなどの従来のメソッドを使用する
  • 「animateWithDuration:animations:」などのブロック構文を利用したメソッドを使用する

iOS4.0からはブロック構文を利用したメソッド(block-based animation methods)の使用が推奨されていますので,ここでは後者を紹介します.

animateWithDuration:animations:メソッド

UIViewのアニメーションで一番シンプルな方法は「animateWithDuration:animations:」メソッドを使用する方法です.

[UIView animateWithDuration:3.0f
                 animations:^{
                     // アニメーションをする処理
                 }];

「animateWithDuration:」にはアニメーションの速度を指定します.
「animations:」ブロック内にアニメーションさせたい処理を記述します.

animateWithDuration:
    animations:completion:メソッド

アニメーションを実行し,そのアニメーションが終了した後に何らかの処理を行う場合は「animateWithDuration:animations:completion:」メソッドを使用すると便利です.

[UIView animateWithDuration:0.1f
                 animations:^{
                     // アニメーションをする処理
                 }
                 completion:^(BOOL finished){
                     // アニメーションが終わった後実行する処理
                 }];

「animateWithDuration:」にはアニメーションの速度を指定します.
「animations:」ブロック内にアニメーションさせたい処理を記述します.
「completion:」ブロック内にアニメーションが終了した後に実行する処理を記述します.

animateWithDuration:delay:options:
    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」と間違えやすいので注意が必要です.

Objective-Cサンプルプログラム

「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サンプルプログラムの実行結果は以下のようになります(静止画なので分かりにくいのですがアニメーションされ,アニメーション終了後にログに「アニメーション終了」とアウトプットされます).

animateWithDuration
アニメーション終了

Objective-Cのおすすめ書籍

Objective-CでiPhoneアプリを作る際に読んだ本です.よかったら参考にしてみてください.私にとってはかなり役に立ちましたよ!

詳解 Objective-C 2.0 第3版

黒本の通称を持つ良書です.
Objective-Cの基礎となる部分をガッチリ押さえられます. プログラミング初学者が読むには敷居が高いですが,Objective-Cを仕事で書く人は絶対に読んでおいたほうがいいです.


iPhoneプログラミングUIKit詳解リファレンス

UIKitの詳細リファレンスとしては最高の書籍だと思います.
UIKitに特化した構成となっており,読み物としてもリファレンスとしても使えます.

関連

  • パラパラアニメーション
  • UIViewのアフィン変換(移動・回転・拡大・縮小)

逆引きObjective-C サイト内検索

Objective-C入門

構文

  • データ型
  • 演算子
  • 条件分岐とループ
  • 定数
  • クラスとメソッド
  • プロパティ
  • プロトコル
  • プリプロセッサ
  • ブロック構文
  • 例外処理
  • More...

基本オブジェクト

  • 文字列
  • 数値・数学
  • 日付・時刻
  • 配列
  • ディクショナリ
  • URL・パス
  • タイマー
  • スレッド
  • 通知
  • クラス・メソッド
  • More...

iPhoneアプリ開発

UI部品

  • UIActionSheet
  • UIAlertView
  • UIButton
  • UIImageView
  • UILabel
  • UIScrollView
  • UISlider
  • UISwitch
  • UITextField
  • UIWebView
  • More...

UI部品の設定

  • フォントの設定
  • 色の設定
  • 画像の設定
  • More...

アニメーション

  • UIViewアニメーション
  • Core Animation
  • More...

イベント

  • タッチイベント
  • More...

リンク

  • C言語関数辞典
  • 逆引きSQL構文集
  • LaTeXコマンド集
  • gnuplotコマンド集
© Copyright 2012 Kojo Sugita. All Rights Reserved
サイトマップ | 逆引きObjective-C for iPhoneアプリ