4236


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

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

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


CC BY-SA 3.0
2015-01-07T07:04:15.340
4228
2016-03-15T05:30:29.260
2772
question
ios objective-c swift
iOSアプリをリッチにさせるアニメーションの選択肢


[PaintCode](http://www.paintcodeapp.com/)というアプリーがあって、Photoshopみたいな絵をかいて（Photoshopよりもっと簡単ですけど）、Objective-
CやSwiftとして出力して、Xcodeで簡単に使える。私デベロッパーとしてきれいなアニメーションができます。

[このページ](http://nicnocquee.com/blog/2014/10/17/quartzcode/)はPaintCodeの得意アニメーションのデモがあります。

僕の下手な日本語を許してください。


CC BY-SA 3.0
2015-01-07T07:34:54.513
4230
2015-01-07T07:34:54.513
2695
4228
answer


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

## 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を渡せば、ストリーミング再生することもできます。

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


CC BY-SA 3.0
2015-01-07T08:28:26.423
4236
2015-01-07T08:28:26.423
5609
4228
answer


  1. Springというフレームワークがあります。<https://github.com/MengTo/Spring>

  2. また、Core Animatorというツール（11,800円）を使うとCoreAnimation対応のコードを生成してくれます。Flashアニメのような複雑な動きをするなら検討する価値があると思います。

  3. 動画を作ってAVPlayerで再生するのも簡単な方法です。AVPlayerItemDidPlayToEndTimeNotification通知を利用してムービーが終わったら次のViewControllerに遷移すればOKです。

  4. Lineツムツムは使ったことがありませんが、以下の情報が参考になるかも知れません。<http://qiita.com/osamu1203/items/a7c78666b18eb499c94b>


CC BY-SA 3.0
2016-03-15T05:30:29.260
23151
2016-03-15T05:30:29.260
14631
4228
answer