UICollectionView 滚动到特定部分

Posted

技术标签:

【中文标题】UICollectionView 滚动到特定部分【英文标题】:UICollectionView scroll to specific section 【发布时间】:2013-04-16 22:10:55 【问题描述】:

使用 Objective C 和 Xcode,我创建了一个包含 10 个部分的 UICollectionView,并且一切正常。无论如何设置第一次显示时查看的部分?默认情况下它显示第 0-9 节,但我希望它从第 5 节开始。

【问题讨论】:

【参考方案1】:

您可以在您的viewDidAppear: 方法中调用scrollToItemAtIndexPath:atScrollPosition:animated:

您可以保留对要滚动到的单元格的引用,然后使用indexPathForCell: 获取索引路径。

以下是您可以选择的滚动位置

UICollectionViewScrollPositionNone
UICollectionViewScrollPositionTop
UICollectionViewScrollPositionCenteredVertically
UICollectionViewScrollPositionBottom
UICollectionViewScrollPositionLeft
UICollectionViewScrollPositionCenteredHorizontally
UICollectionViewScrollPositionRight

【讨论】:

如果特定部分没有项目,只有标题视图怎么办? 如果启用分页,我发现这不起作用。 scrollToItemAtIndexPath 始终将单元格定位在请求的位置,而您想要的是使页面居中(就像手动滚动一样)。如果您没有位于页面中心的单元格,这似乎是不可能的。【参考方案2】:

如果您根据整数行和部分知道要滚动到的位置,则可以在

中使用这些整数
NSIndexPath indexPathForItem:inSection:

创建 NSIndexPath 的方法,而不是保留对单元格的引用,然后调用 indexPathForCell:。此外,如果您希望在显示视图之前发生滚动,可以将此代码移至 viewWillAppear: 方法。

【讨论】:

以上是关于UICollectionView 滚动到特定部分的主要内容,如果未能解决你的问题,请参考以下文章

滚动 UICollectionView 到部分标题视图

UICollectionView 滚动特定长度

UICollectionView - 滚动到下一页

UICollectionView 水平滚动特定列

如何将集合视图单元格滚动到可见区域的中间

以编程方式滚动到 UICollectionView 中的补充视图