PICK UP POST
iOS UICollectionViewで画像をprefetchする
UICollectionViewで画像を読み込んで一覧表示すると
スクロールした時に表示が遅いと感じる時があります。
cellForItemAtIndexPathのタイミングで画像を読み込むと
画像サイズや通信状態によっては表示が追いつかないケースがあります。
この対策として有効なのがiOS 10から使えるUICollectionViewのPrefetchingです。
cellForItemAtIndexPathより早いタイミングで実行され、
メインスレッド以外で実行されます。
同時に画像キャッシュライブラリを使用すればより?です。
例)SDWebImageのprefetchを併用して行う場合
import SDWebImage class SampleViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() if #available(iOS 10.0, *) { collectionView.prefetchDataSource = self } } } extension SampleViewController: UICollectionViewDataSourcePrefetching { // prefetch開始 func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath]) { // APIなどで取得した画像URLの配列を設定 SDWebImagePrefetcher.shared().prefetchURLs(urls) } // prefetchキャンセル // スクロールの方向が変更された時に呼ばれる func collectionView(_ collectionView: UICollectionView, cancelPrefetchingForItemsAt indexPaths: [IndexPath]) { SDWebImagePrefetcher.shared().cancelPrefetching() } } extension SampleViewController: UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { // prefetchをしておけばこのタイミングで既に画像が読み込まれているので // 表示の遅れを改善できる。 } }
TAG
takano takano
素晴らしいアプリを開発して世の中をもっとハッピーにしたい! ビール大好き!卓球大好き!音楽大好き! 最近は子供とおかあさんといっしょを見てるせいで「ブンバボーン」の脳内再生が止まりません。
TAG
- Android
- AWS
- Bitrise
- CodePipeline
- Firebase
- HTML
- iOS
- IoT
- JavaScript
- KPI
- Linux
- Mac
- Memcached
- MGRe
- MGReのゆるガチエンジニアブログ
- MySQL
- PHP
- PICK UP
- PR
- Python
- Ruby
- Ruby on Rails
- SEO
- Swift
- TIPS
- UI/UX
- VirtualBox
- Wantedly
- Windows
- アクセス解析
- イベントレポート
- エンジニアブログ
- ガジェット
- カスタマーサクセス
- サーバ技術
- サービス
- セキュリティ
- セミナー・展示会
- テクノロジー
- デザイン
- プレスリリース
- マーケティング施策
- マネジメント
- ラボ
- リーンスタートアップ
- 企画
- 会社紹介
- 会社紹介資料
- 勉強会
- 実績紹介
- 拡張性
- 採用
- 日常
- 書籍紹介
- 歓迎会
- 社内イベント
- 社員インタビュー
- 社長ブログ
- 視察
- 開発環境