IPhoneアプリケーションで使用したいアニメーションGIFファイルがありますが、アニメーションが機能しません。誰かがそれを修正する方法を知っていますか?
アニメーション化する一連の画像がある場合は、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を使用するよりも簡単であることがわかりました。
UIWebViewは、すべてのGIFコンテンツを正しく表示しません。 UIImageViewを使用する必要がありますが、iPhone OSはアニメーションGIFをサポートしておらず、最初のフレームのみを表示します。
したがって、最初に他のすべてのフレームを抽出する必要があります。
ここに粗いサンプルコード: http://pliep.nl/blog/2009/04/iphone_developer_decoding_an_animated_gif_image_in_objc
ソースは http://blog.stijnspijker.nl/2009/07/animated-and-transparent-gifs-for-iphone-made-easy/ で使用できます。GIFデコーダーがあります。直接使用して解決策を取得します。うまく使いました。しかし、透明性にはいくつか問題があります。
これは、次のコードで実現できます。
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.
私はその古いスレッドを知っています..しかし誰かのために役立つかもしれません.. :)
もう1つのオプションは、アプリケーションでgifをデコードしてから、OpenGLオブジェクトに「フレームサーブ」することです。この方法では、大きなgifのメモリが不足する可能性が低くなります。