web-dev-qa-db-ja.com

iPhoneアプリケーションでアニメーション.gifを使用するにはどうすればよいですか?

IPhoneアプリケーションで使用したいアニメーションGIFファイルがありますが、アニメーションが機能しません。誰かがそれを修正する方法を知っていますか?

20
issac

アニメーション化する一連の画像がある場合は、UIImageViewを使用して簡単に行うことができます。

UIImage *blur5 = [UIImage imageNamed:@"blur5.png"];
UIImage *blur6 = [UIImage imageNamed:@"blur6.png"];

self.imageView.animationImages = [[NSArray alloc] initWithObjects:blur5, blur6, nil];
self.imageView.animationRepeatCount = 5;
[self.imageView startAnimating];

これは、UIWebViewを使用するよりも簡単であることがわかりました。

27

UIWebViewは、すべてのGIFコンテンツを正しく表示しません。 UIImageViewを使用する必要がありますが、iPhone OSはアニメーションGIFをサポートしておらず、最初のフレームのみを表示します。

したがって、最初に他のすべてのフレームを抽出する必要があります。

ここに粗いサンプルコード: http://pliep.nl/blog/2009/04/iphone_developer_decoding_an_animated_gif_image_in_objc

7
Wizfinger

ソースは http://blog.stijnspijker.nl/2009/07/animated-and-transparent-gifs-for-iphone-made-easy/ で使用できます。GIFデコーダーがあります。直接使用して解決策を取得します。うまく使いました。しかし、透明性にはいくつか問題があります。

5
Osama F Elias

これは、次のコードで実現できます。

NSArray * imageArray  = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"1.png"], [UIImage imageNamed:@"2.png"], nil]; //this will be the frames of animation images in sequence.
 ringImage = [[UIImageView alloc]initWithFrame:CGRectMake(100,200,600,600)];
 ringImage.animationImages = imageArray;
 ringImage.animationDuration = 1.5;//this the animating speed which you can modify
 ringImage.contentMode = UIViewContentModeScaleAspectFill;
 [ringImage startAnimating];//this method actually does the work of animating your frames.

私はその古いスレッドを知っています..しかし誰かのために役立つかもしれません.. :)

3
Dalee Davis

もう1つのオプションは、アプリケーションでgifをデコードしてから、OpenGLオブジェクトに「フレームサーブ」することです。この方法では、大きなgifのメモリが不足する可能性が低くなります。

1
kgutteridge