Ios UICollectionView运行时可见单元格计数

Ios UICollectionView运行时可见单元格计数,ios,swift,uicollectionview,uicollectionviewcell,Ios,Swift,Uicollectionview,Uicollectionviewcell,我有一个大学的视野。由于分页的原因,我需要单元格大小与UICollectionView帧大小相等,并且我通过UICollectionViewCell的内容视图中的尾随和前导空格来处理间距,UICollectionView的间距实际上为零。我将UICollectionView的clipToBounds设置为false。 使用调试视图层次结构时,UICollectionView同时有两个可见单元格。但在我的例子中,我需要同时至少3个可见单元格,因为我需要显示前一个单元格和下一个单元格的边缘,就像你在

我有一个大学的视野。由于分页的原因,我需要单元格大小与UICollectionView帧大小相等,并且我通过UICollectionViewCell的内容视图中的尾随和前导空格来处理间距,UICollectionView的间距实际上为零。我将UICollectionView的clipToBounds设置为false。 使用调试视图层次结构时,UICollectionView同时有两个可见单元格。但在我的例子中,我需要同时至少3个可见单元格,因为我需要显示前一个单元格和下一个单元格的边缘,就像你在图像中看到的那样

我该怎么做

func numberOfSections(in collectionView: UICollectionView) -> Int {
    return 1
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return collectionView.frame.size 
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return self.data_array.count
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
    return 0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}

当前返回的单元格大小是集合视图的大小

所以屏幕上只有一个完整的单元格

如果要显示其他单元格的边缘,请在“项目大小”函数中返回较小的大小

类似于

CGSize(width: collectionView.bounds.size.width - 40, height: collectionView.bounds.size.height)
这将使细胞更小,并应显示一些边缘


你将不得不玩不同的大小和项目间距,以完善它

首先,您需要提供有关如何创建视图的更多信息。如何指定当前单元格的大小?和间距。显示一些代码。您提供的信息越多,答案就越详细和相关。@Fogmeister我已经编辑了问题,我需要单元格始终位于UICollectionView的中心,如果我不将宽度设置为collectionView的宽度,就不会发生这种情况。当我将clipToBounds设置为false时,它会显示collectionView框架之外的其他单元格。但问题是它总是显示下一个单元格,而不是前一个单元格。我需要显示两个边缘。如果你想让它总是在屏幕的中心,那么有一个更好的方法。第一。。。照我回答的做。现在您的第一个单元格将左对齐,因此请更新内容插图
.left
,使第一个单元格居中。然后使用这里描述的函数。。。然后确保滚动始终在单元格位于中心时停止。最后一个单元格也会出现同样的问题,因此请更新内容插图,使其也居中。