У меня есть следующий collectionView:
https://youtu.be/dY2MDeFINEY
Я хочу, чтобы изображения оставались центрированными во время переходов в альбомной ориентации, и даже "страничное поведение" collectionView должно Остаться.
Для этого я попробовал несколько вещей. Мой текущий код (только для перехода) выглядит следующим образом:
Код TableViewController, который содержит TableViewCell с collectionView:
...
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
let indexPath = IndexPath(row: 1, section: 0)//The position of the row doesn't change
let cell = tableView.cellForRow(at: indexPath) as? PlantDetailImageTableViewCell
tableView.reloadData()
cell?.respondToTransition()
}
...
Метод responseToTransition (внутри TableViewCell, который содержит collectionView) выглядит так:
func respondToTransition() {
collectionView.collectionViewLayout.invalidateLayout()
let indexPath = IndexPath(item: pageControl.currentPage, section: 0)
DispatchQueue.main.async {
self.pageControl.currentPage = indexPath.row
self.collectionView.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: true)
}
}
Моя схема потока следующая:
extension PlantDetailImageTableViewCell: UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return collectionView.frame.size
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
pageControl.currentPage = Int(self.collectionView.contentOffset.x / self.collectionView.frame.size.width)
}
}
Результат на переход к ландшафту следующий:
https://youtu.be/RlTX0LgfKEY
Как мне заставить изображения оставаться по центру. Вдобавок кажется, что collectionView «потерял» «немного» своего «поведения разбиения на страницы».
Отладчик представлений Xcode показывает следующее для ландшафта (отмеченный синим цветом - это изображение внутри ячейки collectionView):
Любая помощь приветствуется!
РЕДАКТИРОВАТЬ:
Проблема возникает только тогда, когда я пытаюсь изменить go с книжной на альбомную. Так что, если я запускаю приложение в альбомной ориентации, все работает как положено.