我有一个 UICollectionView,水平滚动,paging=YES
,每页显示三个单元格。如果它的数据源有四个项目,则 collectionView 将有“两个页面”。
奇怪的是,在点击单元格时,collectionView 总是快速回到 contentOffset(0,0)
。在此处观看视频:https://www.dropbox.com/s/vlqt3mh7bwyeiw7/collectionviewbug.mov?dl=0
什么都不做,检查我的 git 仓库中的代码:https://github.com/opfeffer/collectionviewbug
有人知道导致此问题的原因以及如何预防吗?谢谢!!
最佳答案
发生这种情况是因为假设您的页面大小为 3,但是对于 4 个元素,您显示的是第一页的 2/3 和预期的第二页的 1/3。当您点击单元格时,集合会移动以完全显示当时向用户显示更多内容的页面。
例如,如果您使用 7 个元素并按第 7 个,则集合转到第 4 个,您可以检查此选项。
避免这种行为的方法是总是“完整的页面”,所以如果你没有足够的元素来填充页面,你需要告诉内容 View 更大。所以你需要用类似这样的东西子类化 UICOllectionViewFlowLayout:
- (CGSize)collectionViewContentSize { CGSize contentSize = [super collectionViewContentSize]; //这假设您在 Collection View Controller 中有一个公共(public)方法来计算任何给定数量的元素的页数 NSInteger pages = [(YourCollectionViewController *) self.collectionView.delegate pagesNumber]; //然后你返回页数宽度的 n 倍和高度的 1 倍的大小 返回 CGSizeMake(CGRectGetWidth(self.collectionView.frame)* 页面,contentSize.height);
关于ios - 启用分页和每页多个单元格时奇怪的 UICollectionView 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25734978/