iOSでアニメーションGIFを表示する


90

iMessageを使用すると、アニメーションGIFを送信および表示できるようになりました。これは、AppleがアプリケーションでのアニメーションGIFの表示をサポートしているということですか、それとも、画像をフレームに分割して順次表示する最も簡単な方法ですか?iOS 5.1でアニメーションGIFを表示する最も簡単な方法は何ですか?

ありがとう!

回答:


140

iOS7をターゲットとしていて、画像がすでにフレームに分割されている場合は、を使用できますanimatedImageNamed:duration:

スピナーをアニメートしているとしましょう。すべてのフレームをプロジェクトにコピーし、次のように名前を付けます。

  • spinner-1.png
  • spinner-2.png
  • spinner-3.png
  • など

次に、次の方法で画像を作成します。

[UIImage animatedImageNamed:@"spinner-" duration:1.0f];

ドキュメントから

このメソッドは、nameパラメーターで指定された基本ファイル名に一連の番号を追加することにより、一連のファイルをロードします。たとえば、nameパラメータのコンテンツが「image」の場合、このメソッドは「image0」、「image1」などの名前のファイルから「image1024」までイメージをロードしようとします。アニメーション画像に含まれるすべての画像は、同じサイズとスケールを共有する必要があります。


5
また、フレーム内にアニメーションがない場合は、プレビューアプリでGIFを開いてフレームをドラッグするだけです。:フレームは、ここを参照してくださいので、その後、.TIFFとして抽出されなければならないmaclife.com/article/howtos/...
アンドレあるFratelli


38

FLAnimatedImageは、iOS用の高性能なオープンソースのアニメーションGIFエンジンです。

  • デスクトップブラウザに匹敵する再生速度で複数のGIFを同時に再生します
  • 可変フレーム遅延に対応
  • メモリのプレッシャーの下で正常に動作する
  • 最初の再生ループ中の遅延やブロッキングを排除
  • 高速GIFのフレーム遅延を最新のブラウザと同じように解釈します

これは、FlipboardのすべてのGIF強化するために私が作成した、十分にテストされたコンポーネントです。


現在のフレームプロパティは、このフレームワークから間違って返しています!github.com/Flipboard/FLAnimatedImage/issues/222
Mo Farhand

12

もう1つの方法はUIWebView、アニメーションGIFを表示するためにaを使用することです。GIFがサーバーからフェッチされる場合は、これでフェッチが処理されます。ローカルGIFでも動作します。


ありがとう。これはうまくいきます。ただし、最初にgifがWebviewにロードされるときに遅れが発生し、アニメーションの「スローモーション」が発生する場合があります。スムーズにする必要がある場合は、この質問への回答で共有されるアニメーションフレームの方が適している場合があります。
ハンマー

2
「iOS 8.0およびOS X 10.10以降では、WKWebViewを使用してアプリにWebコンテンツを追加します。UIWebViewまたはWebViewは使用しないでください。」developer.apple.com/reference/webkit/wkwebview
Jason Moore

1
WebKitを使用してGIFを表示することは、食料品を家に運ぶために貨物船を購入するようなものです。Webビューは非常に高価であり、完全なJavaScriptおよびレンダリングエンジンの初期化が必要です。画像ビューソリューションの使用を強くお勧めします
サイレン

8

iOSの11枚の写真のフレームワークのアニメーションGIFの再生を追加することができます。

サンプルアプリはこちらからダウンロードできます

アニメーション化されたGifs再生の詳細(13:35から開始):https : //developer.apple.com/videos/play/wwdc2017/505/

ここに画像の説明を入力してください


hey @sashサンプルアプリに「AnimatedImage」クラスがありません。インポートしている別のフレームワークはありますか?
Shabarinath Pabba

@ShabarinathPabbaサンプルアプリが更新されたようです:(
sash

7
#import <QuickLook/QuickLook.h>
#import "ViewController.h"

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    QLPreviewController *preview = [[QLPreviewController alloc] init];
    preview.dataSource = self;

    [self addChildViewController:preview];
    [self.view addSubview:preview.view];
}

#pragma mark - QLPreviewControllerDataSource

- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)previewController
{
    return 1;
}

- (id)previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)idx
{
    NSURL *fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"myanimated.gif" ofType:nil]];
    return fileURL;
}

@end

メモリ使用量が
少なく

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.