如果你看看
ViewController.swift
从**upcarouselflowlayout**附带的演示中,您将看到
scrollViewDidEndDecelerating
是的。当滚动条停止移动,单元格变为“中心”单元格时触发。
在那个函数中,变量
currentPage
设置,这就是更改集合视图下面的标签的位置。
所以,那是
一
你想干什么就干什么。
如图所示添加这两行…当滚动停止时,您将创建
IndexPath
手动调用
didSelectItemAt
以下内容:
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let layout = self.collectionView.collectionViewLayout as! UPCarouselFlowLayout
let pageSide = (layout.scrollDirection == .horizontal) ? self.pageSize.width : self.pageSize.height
let offset = (layout.scrollDirection == .horizontal) ? scrollView.contentOffset.x : scrollView.contentOffset.y
currentPage = Int(floor((offset - pageSide / 2) / pageSide) + 1)
// add these two lines
let indexPath = IndexPath(item: currentPage, section: 0)
collectionView(self.collectionView, didSelectItemAt: indexPath)
}
您几乎肯定会希望添加一些错误检查和附加功能(例如,如果单元格实际发生更改,则只调用didselect,而不只是稍微滑动它,但仍保留在当前单元格上),但这是一个起点。