繁体   English   中英

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

[英]Strange UICollectionView behavior when paging enabled and multiple cells per page

我有一个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

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

发生这种情况是因为您的页面大小为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); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM