启用分页和每页多个单元格时出现奇怪的UICollectionView行为

时间:2014-09-09 00:19:12

标签: ios objective-c scroll uicollectionview

我有一个UICollectionView,水平滚动,paging=YES,每页显示三个单元格。如果它的数据源有四个项目,那么collectionView将有两个页面"。

奇怪的是,在点击单元格时,collectionView始终会快速回到contentOffset(0,0)。观看视频:https://www.dropbox.com/s/vlqt3mh7bwyeiw7/collectionviewbug.mov?dl=0

无所事事,检查我的git repo上的代码:https://github.com/opfeffer/collectionviewbug

任何人都知道导致此问题的原因以及如何预防?谢谢!

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为您的页面大小为3,但是有4个元素,您显示的是第一页的2/3和预期的第2页的1/3。当您点击单元格时,集合会移动以完全显示当时向用户显示更多内容的页面。

如果你使用7个元素,你可以检查一下,然后按7收集到第4个元素。

避免这种行为的方法是始终拥有完整的页面"因此,如果您没有足够的元素来填充页面,则无论如何都需要告诉内容视图更大。因此,您需要使用类似于此的内容对UICOllectionViewFlowLayout进行子类化:

  • (CGSize)collectionViewContentSize { CGSize contentSize = [super collectionViewContentSize]; //这假设您在集合视图控制器中有一个公共方法来计算任何给定数量元素的页数 NSInteger pages = [(YourCollectionViewController *)self.collectionView.delegate pagesNumber]; //然后返回n倍宽度的页面大小和高度的一次 返回CGSizeMake(CGRectGetWidth(self.collectionView.frame)* pages,contentSize.height); }