When device rotating, UICollectionView needs to recalculate the insets of cells for new bounds in most case.
[UICollectionView reloadData]
is the simplest way to do it, but it won't feel good when you seeing your views move to new place instantly.
This is my solution: