UICollectionViewで画面の回転に合わせてCellのサイズを変更する良い方法
画面サイズに合わせてUICollectionViewのCellのサイズを決めている場合、画面の回転をどのタイミングでUICollectionViewに通知するのが良いのか? そこそこまじめに調べてみたのでメモ。
動作を確認した環境
環境 | 情報 |
---|---|
Xcode | 6.3 (6D570) |
iOS | 8.3 |
Swift | 1.2 |
Date | 2015/5/7 |
deprecatedなAPIを使っていたので修正(2015/05/07)
UICollectionViewに知らせるタイミング
すぐに思いつくタイミグは次の2つ。
- viewWillTransitionToSize()
- viewDidLayoutSubviews()
通知を使うのは面倒なので今回は省略。で、どのタイミングを使うのが良いのか?
実際にやってみた結果・・・ 現時点ではどっちも大差ない結果に。あとは、好みで選べばいい?
おすすめの方法
具体的にはこんな感じになるかと。
@IBOutlet weak var collectionView: UICollectionView! override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() collectionView.collectionViewLayout.invalidateLayout() collectionView.reloadData() }
参考資料
See_Ku / AutoLayoutTips — Bitbucket (ソースコード)
https://bitbucket.org/See_Ku/autolayouttips
UICollectionViewFlowLayout Size Warning When Rotating Device to Landscape - JavaHow.net
http://javahow.net/questions/14469251/uicollectionviewflowlayout-size-warning-when-rotating-device-to-landscape