Я зарегистрировал 2 различных пользовательских UICollectionViewCell
типа:
collectionView.register(CustomCell1.self, forCellWithReuseIdentifier: "cell1")
collectionView.register(CustomCell2.self, forCellWithReuseIdentifier: "cell2")
Для одного из этих типов ячеек мне нужно, чтобы размер в портрете отличался от его размера в альбомной ориентации (у меня 2разделы, и каждый заполнен ячейками одного типа), и я реализовал collectionView(_:layout:sizeForItemAt:)
следующим образом:
public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
if indexPath.section == 0 {
return CGSize(width: 30, height: 30)
}
if UIInterfaceOrientationIsLandscape(UIApplication.shared.statusBarOrientation) {
return CGSize(width: 300, height: 300)
}
return CGSize(width: 100, height: 100)
}
Снимок экрана для портрета:
Снимок экрана для ландшафта:
Кажется, это работает на iOS 11
(оранжевые ячейки изменяются при повороте устройства), но я получаю некоторые странные сообщения в Xcode
, например:
[App], если мы находимся в реальном обработчике предварительной фиксации, мы не можем фактически добавлять какие-либо новые заборы из-за CAограничение
С другой стороны, это не работает вообще на iOS 10
(оранжевые ячейки не изменяются в размерах).
Как правильно обрабатывать этот сценарий?