【iOS】UITableViewCell内の非同期画像読み込み
こんにちは。mashiです。今回は、UITableViewCell内の非同期画像読み込みについてサラッとまとめてみたいと思います。
今回は「AFNetworking」ライブラリを使用して実装します。
ライブラリをダウンロード
以下のリンクからライブラリ「AFNetworking」をダウンロードします。
AFNetworking/AFNetworking · GitHub
プロジェクトに追加
ダウンロードした「AFNetworking」ディレクトリ内から
- AFNetworking
- UIKit+AFNetworking
をディレクトリごとプロジェクトへ追加します。
フレームワークを追加
「Targets」->「Build Phases」->「Link Binary With Libraries」から
- Security.framework
- MobileCoreServices.framework
- SystemConfiguration.framework
を追加します。
サンプルコード
#import "AFNetworking.h" #import "UIImageView+AFNetworking.h" - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITalbeViewCell *cell = (UITalbeViewCell *)[tableView dequeueReusableCellWithIdentifier:@"CELL" forIndexPath:indexPath]; // cell内のimageViw_AFNetWorking------------------------------------------------------------------------------------------------------------------------------------- NSString *urlString =@"http://*****************/ファイル名"; NSURL *url = [NSURL URLWithString:urlString]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; UIImage *placeholderImage = [UIImage imageNamed:@"no_image.jpg"]; // 読み込み前の画像 __weak UITableViewCell *weakCell = cell; __weak UIImageView *weakImageView = cell.imageView; [cell.imageView setImageWithURLRequest:request placeholderImage:placeholderImage success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { weakImageView.image = image; [weakCell setNeedsLayout]; } failure:nil]; return cell; }
ロード中はplaceholderImageで設定した画像が表示されます。
読み込みが完了した時点でURL先の画像が表示されます。
コメントをどうぞ