Skip to content

Instantly share code, notes, and snippets.

@sahara-ooga
Last active April 16, 2017 02:44
Show Gist options
  • Save sahara-ooga/f8698c4cc8344d9c2bef54483c1320d2 to your computer and use it in GitHub Desktop.
Save sahara-ooga/f8698c4cc8344d9c2bef54483c1320d2 to your computer and use it in GitHub Desktop.
UIImageViewで画像をダウンロードして表示する(Objective CとAFNetworkinig利用)

まず、ヘッダファイルをインポートする。

#import "UIImageView+AFNetworking.h"

In Memoryキャッシュで十分な場合

setImageWithURL: を使う。これらのメソッドは、メモリ上に該当する画像があればそちらを、なければURLをもとに画像を取得してimageViewにセットし、メモリにキャッシュする。 setImageWithURL:placeholderImage: メソッドを使うと、該当画像を取得するまでの間、表示する代替画像を指定できる。

[imageView setImageWithURL:[NSURL URLWithString:imageURL]];

// Or, with a placeholder image displayed while the image is being downloaded:
[imageView setImageWithURL:[NSURL URLWithString:imageURL]
          placeholderImage:[UIImage imageNamed:@"placeholder"]];

キャッシュを永続的に使いたい場合

まず、 NSURLRequest 作成時に、キャッシュポリシーを指定する。 例:

    NSURLRequest *imageRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:imageURL]
                                                  cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                              timeoutInterval:60];

※キャッシュポリシーは次の通り:

  • NSURLRequestUseProtocolCachePolicy プロトコルのキャッシュポリシーに従う(デフォルト)
  • NSURLRequestReloadIgnoringLocalCacheData キャッシュを利用しない
  • NSURLRequestReloadIgnoringCacheData 上記と同じ
  • NSURLRequestReloadIgnoringLocalAndRemoteCacheData 上記に加え、プロキシーのキャッシュも破棄する
  • NSURLRequestReturnCacheDataElseLoad キャッシュがあればそれを利用する
  • NSURLRequestReturnCacheDataDontLoad キャッシュのみを使用する(オフライン動作と同じ)
  • NSURLRequestReloadRevalidatingCacheData キャッシュの有効性をチェックし、有効な場合のみキャッシュを利用する

以下は インメモリを使用した場合 と同じ。

以下の例では、作成したNSURLRequestを使って setImageWithURLRequest:placeholderImage:success:failure: を使う。

[imageView setImageWithURLRequest:imageRequest
                 placeholderImage:[UIImage imageNamed:@"placeholder"]
                          success:nil
                          failure:nil];

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment