在UICollectionView中只允许前向滑动



我有一个UICollectionView,我在其中显示UICollectionViewCell。每个单元的heightwidthcollection view相同。

我想限制用户在进入下一个单元格

后只能滑动回UICollectionViewCell

有点像tinder的体验,虽然我的UICollectionView中有Pagination enabled

您可以执行以下步骤

你必须在滚动结束后获得当前行并更新

中的当前索引
currentIndex

对象然后允许视图滚动或不滚动。确保你已经计算了单元格的宽度和左右边缘以及集合视图的单元格空间

var currentIndex = 0
var cellWidth = 0.0

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let row = scrollView.contentOffset.x / cellWidth
currentIndex = Int(row)
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.x < cellWidth * CGFloat(currentIndex){
scrollView.contentOffset =  CGPoint(x: cellWidth * CGFloat(currentIndex), y: -20)
scrollView.bounces = false
} else {
scrollView.bounces = true
}
}
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {

let indexPathOfVisible = collectionView.indexPath(for: collectionView.visibleCells.first ?? UICollectionViewCell())

if indexPath.row < indexPathOfVisible?.row ?? 0 {
collectionView.scrollToItem(at: indexPathOfVisible!, at: .right, animated: false)
} 
}

相关内容

  • 没有找到相关文章

最新更新