Это связано с тем, что при включении разбиения на страницы представление собрания будет останавливать представление содержимого, кратное размеру представления собрания.
Один из подходов к вашей проблеме - разделить ячейки на разделы, в частности, один раздел на страницу и четыре ячейки (максимум) на раздел. Если вы правильно настроите вставки разделов, то один раздел будет иметь размер представления коллекции, и ячейки будут выровнены по центру раздела.
Вот ваш код с небольшими изменениями. Я использовал жестко запрограммированные числа, но я советую вам не использовать это в своем коде (также вам следует рассмотреть возможность перемещения вычислений размера ячейки из метода sizeForItem, так как он будет вызываться несколько раз, но размер не изменится).
@IBOutlet weak var collectionView: UICollectionView! {
didSet {
collectionView.dataSource = self
collectionView.delegate = self
collectionView.showsHorizontalScrollIndicator = false
collectionView.showsVerticalScrollIndicator = false
collectionView.isPagingEnabled = true
}
}
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 10
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 4
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell identifier", for: indexPath)
// setup your cell
return cell
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let padding: CGFloat = 45.0
let hpadding: CGFloat = 15.0
let collectionViewWidthSize = collectionView.frame.size.width - padding
let collectionViewHeightSize = collectionView.frame.size.height - hpadding
return CGSize(width: collectionViewWidthSize / 2 , height: collectionViewHeightSize / 2 )
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 0, left: 15, bottom: 0, right: 15)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat
{
return 15
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 15
}