LoginSignup
20
19

More than 5 years have passed since last update.

Pre-Fetching APIでUICollectionViewのパフォーマンスを上げる

Last updated at Posted at 2017-09-09

overview

Pre-Fetching API とは

usage

  • prefetchのタイミング( = prefetchItemsAt)で、画像キャッシュのみ行う
  • UICollectionViewDataSourcePrefetching protocolに準拠
    • collectionView.prefetchDataSource = self

prefetchItemsAt

FooViewController.swift
func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath]) {
    preheater.startPreheating(
        with: makeCacheRequests(indexPaths: indexPaths)
    )
}

private func makeCacheRequests(indexPaths: [IndexPath]) -> [Request] {
    return indexPaths.map { 
        Request(url: viewModel.cellModels[$0.row].url) 
    }
}

cancelPrefetchingForItemsAt

FooViewController.swift
func collectionView(_ collectionView: UICollectionView, cancelPrefetchingForItemsAt indexPaths: [IndexPath]) {
    preheater.stopPreheating(
        with: makeCacheRequests(indexPaths: indexPaths)
    )
}

etc

ref

20
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
19