Я создал UICollectionView, чтобы я мог упорядочить представления в аккуратные столбцы. Я бы хотел, чтобы на устройствах шириной 500 пикселей был один столбец.
Чтобы достичь этого, я создал эту функцию:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let size = collectionView.frame.width
if (size > 500) {
return CGSize(width: (size/2) - 8, height: (size/2) - 8)
}
return CGSize(width: size, height: size)
}
Это работает как ожидается при первой загрузке, однако, когда я поворачиваю устройство, расчет не всегда повторяется, и представления не всегда перерисовываются, как ожидалось. Здесь мой код для поворота устройства:
override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) {
collectionView.collectionViewLayout.invalidateLayout()
self.view.setNeedsDisplay()
}
Я предполагаю, что забыл что-то перерисовать, но я не уверен, что. Любые идеи очень благодарны!