У меня есть такой код для представления моей коллекции
let collectionView: UICollectionView = {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0
let cv = UICollectionView(frame: .zero, collectionViewLayout: layout)
cv.translatesAutoresizingMaskIntoConstraints = false
cv.isPagingEnabled = true
cv.showsHorizontalScrollIndicator = false
cv.backgroundColor = .white
return cv
}()
И я хочу, чтобы в этом представлении коллекции отображалось 5 элементов по горизонтали, при этом на странице было 4 элемента. Он отлично работает, когда я перехожу на следующую страницу, которая будет содержать мои 2-5 элементы, но затем появляется ошибка. Если я просто нажму на вторую страницу, она автоматически перейдет к моей первой странице. Это не проблема, когда у меня всего шесть предметов, а на второй странице показаны 3-6 предметы. Кажется, это происходит, когда на второй странице отображается меньше элементов, как в моем первом примере.
Кто-нибудь может мне помочь с этой ошибкой?
Вот пример
class VC: UIViewController {
// add collectionView to view in viewDidLoad
view.addSubView(collectionView)
}
extension VC: UICollectionViewDelegate { }
extension VC: UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
4
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellId", for: indexPath)
return cell
}
}
extension VC: UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
CGSize(width: collectionView.bounds.width / 3, height: collectionView.bounds.height)
}
}