iOSDC Japan 2016 参加メモ: A-3 iOS 10時代の新しいCollectionView使いこなし術
- @TachibanaKaoru さん
New Lifecycle of Cell
- iOS 10からcellのライフライクルが変わる
現在のライフライクルの復讐
- cellForItemAtIndexPath によって画面内の分生成され、それが画面外に出ると次のcellに使いまわされる
- 1画面分のcellが作られていた
- 元々、このスタイルはTableViewで考えられたスタイルだが、CollectionViewでは一気に複数使いまわされることもあった
iOS 10から
- 画面外に用意されるcellの数がぐっと多くなった
- 1.5画面分用意されるようになった
- willDisplayCellとcellForItemAtIndexPathの時間差が大きくなった
prefetch API
- ライフサイクルで増えた分より、更に奥のセルに対してprefetchすることができるようになった
- prefetchのキャンセルも出る
- かなり事前に作れるので、ユーザー体験が上がる
iOS9以前では、どうすると軽くできる?
基本だが
- CollectionViewよりTableView
重い処理はcellForItemAtIndexPathでやろう
willDisplayCell / didEndDisplayCell は軽めに
描画処理の高速化
- Blend-Layer処理をなるべく使わない
- シミュレータの Color Blend Layerをチェック入れるとわかる
- 赤がBlend 緑がBlendじゃない
- 緑を増やそう
- 透過pngやclearColor背景を使わない
- 画像に背景色を含めてしまったりするといい
- 角丸やシャドウを画像に含めてもらうほうが高速
- Blend-Layer処理をなるべく使わない
QA
prefetchはデリゲート?iOS9の時に書いてあっても大丈夫?
- iOS9だと呼ばれないだけだから大丈夫!
prefetchはどういう処理に向いてる?
- 画像の先読みや、計算が必要な処理にいいかも
- cell自体はまだ存在しない段階