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

标签 ios objective-c scroll uicollectionview

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

相关文章:

ios - 滚动时 UITableViewCell 自动布局抖动的动态单元格高度问题

ios - 如何为不同的屏幕尺寸设置不同的自动布局约束

ios - Apple 示例代码中的 NavigationView

ios - 如何禁用 UITextField 的选择?

html - 如何使两个标题一个在另一个下面并使它们固定在滚动上?

javascript - 围绕非矩形形状流动和滚动文本

ios - CAShapeLayer 改变不同画笔的宽度

objective-c - Swift 和 Objective C 委托(delegate)调用 - 数据类型问题

ios - 在 SLRequest 上设置超时策略?

css - 位置 :fixed on element in ie7/8 and problems with the scrolling of the content inside it