具有分页的UICollectionView。将第二个单元格保持在屏幕中央

时间:2019-08-26 18:52:44

标签: ios swift uitableview pagination uicollectionview

我是iOS新手。

我在tableview单元格中有我的收藏视图。 集合视图单元格中有3个单元格。

我需要在屏幕中央显示集合视图的第二个单元格,如图所示,并且还想在其中添加分页。 任何帮助将不胜感激。 Image 谢谢

1 个答案:

答案 0 :(得分:0)

几个月前,我不得不做一个类似的集合视图,这是我使用的代码:

func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
        let layout = theNameOfYourCollectionView.collectionViewLayout as! UICollectionViewFlowLayout 
        let cellWidthIncludingSpacing = layout.itemSize.width + layout.minimumLineSpacing // Calculate cell size
        let offset = scrollView.contentOffset.x
        let index = (offset + scrollView.contentInset.left) / cellWidthIncludingSpacing // Calculate the cell need to be center

        if velocity.x > 0 { // Scroll to -->
            targetContentOffset.pointee = CGPoint(x: ceil(index) * cellWidthIncludingSpacing - scrollView.contentInset.right, y: -scrollView.contentInset.top)
        } else if velocity.x < 0 { // Scroll to <---
            targetContentOffset.pointee = CGPoint(x: floor(index) * cellWidthIncludingSpacing - scrollView.contentInset.left, y: -scrollView.contentInset.top)
        } else if velocity.x == 0 { // No dragging
            targetContentOffset.pointee = CGPoint(x: round(index) * cellWidthIncludingSpacing - scrollView.contentInset.left, y: -scrollView.contentInset.top)
        }
    }

此代码计算单元格的大小,已经显示了多少个单元格,滚动完成后,对其进行调整以使单元格居中。

如果要使用此代码,请确保在pagingEnabled中具有collectionView的false

还要在您的UIScrollViewDelegate中实现ViewController