iOS優雅な展示GIF動図---FLAnimatedImage

2536 ワード

冒頭の言葉:


一般に、システムが提供するUIImageViewは、一般的なプログラムにおけるピクチャ表示のニーズを満たしているが、ピクチャには特殊なフォーマットgif動図がある.複数の画像を繰り返し再生し、アニメーションの効果を達成します.私たちがよく見るgit動図はブラウザ内で展示されていて、効果はとてもいいです.では、アプリにはgif動図をどのように展示すればいいのでしょうか.まず、オープンソースライブラリ:FLAnimatedImageについて説明します.

簡単な説明:


FLAnimatedImageクラスライブラリ全体には4つのファイルがあります:FLAnimatedImage.h和.m(NSObjectより引き継ぐ、gifデータの処理を担当する、UIImageに類似する)FLAnimatedImageView.h和.m(UIImageViewから継承され、gif動図の表示を担当する).
FLAnimatedImageに係るコアアルゴリズムは、NSDataから各フレームピクチャを抽出し、フレームピクチャキャッシュキュー処理を含む.
FLAnimatedImageViewでは、CADisplayLinkタイマを使用して、各フレームの画像を描き続けます.
両者は「生産しながら消費する」メモリ制御にぴったり合っています.

使用編:


単純にFLAnimatedImageを使ってgif図を1枚見せるだけなら、とても簡単です.公式サイトでは、最も簡単な例を示しています.
FLAnimatedImage *image = [FLAnimatedImage animatedImageWithGIFData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_%28large%29.gif"]]];
FLAnimatedImageView *imageView = [[FLAnimatedImageView alloc] init];
imageView.animatedImage = image;
imageView.frame = CGRectMake(0.0, 0.0, 100.0, 100.0);
[self.view addSubview:imageView];

では問題ですが、このような簡単なコードは明らかにプロジェクトに適用できません.有名なSDWebImageがFLAnimatedImageとどのように完璧に協力しているかを見てみましょう.
もしあなたが今使っているなら.XのSDWebImageバージョンは、まずpod'SDWebImage/GIF'を参照する必要があります.gifモジュールはデフォルトでSDWebImageに含まれていませんよ.
そして、あなたのUIImageViewをFLAnimatedImageViewに置き換えるだけでいいです.他の機能はそのまま使えます.非同期ロードネットワークピクチャ、ローカルキャッシュ、ロードアニメーションの設定、ビットマップの設定、コールバック方法などが含まれます.すべてのコンテンツはFLAnimatedImageView+WebCacheで使用できます.hで見つけます.
上のコード:
// 
FLAnimatedImageView *imageView = [[FLAnimatedImageView alloc] initWithImage:[UIImage imageNamed:@"demo"]];
imageView.backgroundColor = [UIColor colorWithWhite:0.8 alpha:1];
imageView.contentMode = UIViewContentModeScaleAspectFill;
imageView.clipsToBounds = YES;
[self.contentView addSubview:imageView];

// 
[imageView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.offset(4);
    make.left.offset(20);
    make.width.mas_equalTo(140);
    make.height.mas_equalTo(140);;
}];

// 
[imageView sd_setShowActivityIndicatorView:YES];

// 
[imageView sd_setImageWithURL:[NSURL URLWithString:@"http://demo.gif"] completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
    // 
}];

これでSDWebImageのすべての機能を完璧に手に入れました.とても爽やかではありませんか.
もちろん、UIImageViewをFLAnimatedImageに置き換えたくない場合は、次の紹介内容を見て、UIImageを直接動かすこともできます.
iOS優雅な展示GIF動図2----UIImage