sguruapp@gmail.com
facebook vk instagram Телеграм youtube

Переход к следующей ячейке в CollectionView (UICollectionView Scroll to next item) - Swift 5


// Создать переменную - эта переменная будет использована для перехода
var step = 1

// Создать массив, он будет хранить все данные
let story = [1,2,3]

// 1 вариант
func next() {
switch step {
case 0:
let getIndex = IndexPath.init(item: 0, section: 0)
collectionView.scrollToItem(at: getIndex, at: .centeredHorizontally, animated: true)
step += 1

case 1:
let getIndex = IndexPath.init(item: 1, section: 0)
collectionView.scrollToItem(at: getIndex, at: .centeredHorizontally, animated: true)
step += 1

case 2:
let getIndex = IndexPath.init(item: 2, section: 0)
collectionView.scrollToItem(at: getIndex, at: .centeredHorizontally, animated: true)
step = 0

default:
step = 0
}
}


// 2 вариант
func next2() {
if step <= story.count {
let getIndex = IndexPath.init(item: step, section: 0)
collectionView.scrollToItem(at: getIndex, at: .centeredHorizontally, animated: true)
step += 1
}

if step > story.count {
step = 0
let getIndex = IndexPath.init(item: step, section: 0)
collectionView.scrollToItem(at: getIndex, at: .centeredHorizontally, animated: true)
step += 1
}
}


// Расширение необходимо для работы с настройками ячейки
extension CollectionViewController: UICollectionViewDelegateFlowLayout {

// Метод sizeForItemAt позволяет установить высоту и ширину ячейки (размеры)
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: (view.frame.size.width) - 24, height: view.frame.size.height - 300)
}

// Метод insetForSectionAt позволяет установить отступы: слева, справа, сверху и снизу
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 12, left: 12, bottom: 12, right: 12)
}
}



// Если работать с pageController
override func viewDidLoad() {
super.viewDidLoad()

pageController.numberOfPages = story.count
pageController.currentPage = 0
}

override func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let visibleRect = CGRect(origin: self.collectionView.contentOffset, size: self.collectionView.bounds.size)

let visiblePoint = CGPoint(x: visibleRect.midX, y: visibleRect.midY)

if let visibleIndexPath = self.collectionView.indexPathForItem(at: visiblePoint) {
self.pageController.currentPage = visibleIndexPath.row
}
}

Возврат к списку

обучись профессии будущего

Хочешь стать успешным разработчиком
приложений? Тогда добро пожаловать к нам.

обучись профессии будущего