開発メモ

開発関係のメモをいろいろと。たぶん。

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つ。

  1. viewWillTransitionToSize()
  2. 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