iOSアプリをリッチにさせるアニメーションの選択肢


iOSでUIViewのアニメーションでは、view自体の位置やアルファ、色などのアニメーションが使えるのは分かりました。  
アプリを利用していると他にも多彩なアニメーションがあると思います。  
想定しているのはゲームなどではなく、ちょっとしたツールのアプリの中でリッチさを出すためのアニメーションについてです。  
どのような形式のファイルを使うことが出来て、どのような選択肢、手法がありますか？

例えば、  
①画像の細かい繰り返しの動きがあるようなアニメーションではgifアニメーションを使うのでしょうか？  
②Lineツムツムのオープニングムービーのようなものは動画でしょうか？一般的にアプリに使う動画圧縮形式はなんでしょうか？  
③ゲームなどのアプリの起動時に、開発会社のロゴなどがアニメーションするようなものは動画でしょうか？  
など

参考になりそうな情報があまり見つかりませんでしたので、相談させてください。  
iOS7以上を想定しています。




下記のなかから、用途に応じて使い分けるとよいと思います。

## Layer Transform

Viewの移動、回転、拡大縮小等でしたら、Layer Transformを使うと良いです。たとえば、Viewを0.5秒間かけて180度回転させるには:

[code]

    [UIView animateWithDuration:0.5 animations:^{
        myView.layer.transform = CGAffineTransformMakeRotation(M_PI);
    }];
    
[/code]

`CGAffineTransformConcat` を使えば、組み合わせも可能です。

[code]

    myView.layer.transform = CGAffineTransformConcat(
        CGAffineTransformMakeRotation(M_PI), CGAffineTransformMakeScale(1.1, 1.1));
    
[/code]

リソースファイルが不要で、CPUやメモリ使用量も軽いので、シンプルなアニメーションであればLayer Transformがおすすめです。

## UIImageView

アニメーションGIFのように、画像を次々入れ替えたければ、UIImageViewのアニメーション機能があります。

[code]

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
    imageView.animationDuration = 1.0;
    imageView.animationRepeatCount = 2;
    imageView.animationImages = @[[UIImage imageNamed:@"1.png"],
                                  [UIImage imageNamed:@"2.png"],
                                  [UIImage imageNamed:@"3.png"]];
    [self.view addSubView:imageView];
    [imageView startAnimating];
    
[/code]

## AVPlayer

複雑なアニメーションや、実写のムービーなどは、AVPlayerを使って動画再生します。MPEG4やQuickTimeに対応しています。
<https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVFoundation_Constants/index.html#//apple_ref/doc/constant_group/File_Format_UTIs>

動画ファイルは、アプリにリソースとして持たせるか、 `[AVPlayer playerWithURL:...`
に外部URLを渡せば、ストリーミング再生することもできます。

ファイル形式は、画質やファイルサイズを考慮して、ケースバイケースで選んでください。




下記のなかから、用途に応じて使い分けるとよいと思います。

## Layer Transform

Viewの移動、回転、拡大縮小等でしたら、Layer Transformを使うと良いです。たとえば、Viewを0.5秒間かけて180度回転させるには:

[code]

    [UIView animateWithDuration:0.5 animations:^{
        myView.layer.transform = CGAffineTransformMakeRotation(M_PI);
    }];
    
[/code]

`CGAffineTransformConcat` を使えば、組み合わせも可能です。

[code]

    myView.layer.transform = CGAffineTransformConcat(
        CGAffineTransformMakeRotation(M_PI), CGAffineTransformMakeScale(1.1, 1.1));
    
[/code]

リソースファイルが不要で、CPUやメモリ使用量も軽いので、シンプルなアニメーションであればLayer Transformがおすすめです。

## UIImageView

アニメーションGIFのように、画像を次々入れ替えたければ、UIImageViewのアニメーション機能があります。

[code]

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
    imageView.animationDuration = 1.0;
    imageView.animationRepeatCount = 2;
    imageView.animationImages = @[[UIImage imageNamed:@"1.png"],
                                  [UIImage imageNamed:@"2.png"],
                                  [UIImage imageNamed:@"3.png"]];
    [self.view addSubView:imageView];
    [imageView startAnimating];
    
[/code]

## AVPlayer

複雑なアニメーションや、実写のムービーなどは、AVPlayerを使って動画再生します。MPEG4やQuickTimeに対応しています。
<https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVFoundation_Constants/index.html#//apple_ref/doc/constant_group/File_Format_UTIs>

動画ファイルは、アプリにリソースとして持たせるか、 `[AVPlayer playerWithURL:...`
に外部URLを渡せば、ストリーミング再生することもできます。

ファイル形式は、画質やファイルサイズを考慮して、ケースバイケースで選んでください。

