UICollectionView - 滚动到下一页

Posted

技术标签:

【中文标题】UICollectionView - 滚动到下一页【英文标题】:UICollectionView - scroll to the next page 【发布时间】:2016-01-18 07:26:32 【问题描述】:

是否有机会在 UICollectionView 中使用 . scrollToItemAtIndexPath 并且不捕捉到项目本身,而是捕捉到项目所在的页面? (我启用了分页。)

干杯

【问题讨论】:

项目的页面是什么意思? 每个页面是否有固定数量的收集单元? 是的,项目的页面。我有显示特定月份的页面(这是一个日历)。但是(几乎)每个月都从不同的日子(星期五、星期一等)开始,我想滚动到包含当天的部分(月)。因此,如果我想滚动到(假设现在是 2015 年 12 月 14 日),它会显示如下:imgur.com/TiDWW8X——这就是我想将其捕捉到当前页面/部分的原因 【参考方案1】:

您需要创建NSIndexPath 而不是滚动到该索引。

 //Mark: - Move to cell when view did appear

overload viewDidAppear() 


    let scrollIndex: NSIndexPath = NSIndexPath(forItem: dayIndex, inSection: monthSection)
    if (// Check you are in range of UIcollectionView's count) 
        //Scroll collectionview according to your requirement i.e UICollectionViewScrollPositionCenteredHorizontally or UICollectionViewScrollPosition.Left 
        self.YourCollectionView.scrollToItemAtIndexPath(scrollIndex, atScrollPosition: UICollectionViewScrollPositionCenteredHorizontally, animated: true)
    

【讨论】:

我在上面添加了关于该项目的评论 但问题是它不会捕捉到页面。它确实滚动到单元格本身,这很好,但是对于位于页面(部分)中心的单元格,我得到了视图:imgur.com/TiDWW8X。另外,我不知道它是否重要,但我不希望在点击后发生这种情况,我希望它在您加载视图时发生 - 所以我试图在 viewDidAppear 中实现这个 .scrollToItemAtIndexPath 更新 viewDidAppear 的答案。我不明白你关于“不对齐页面”的观点。 ios 中没有页面。【参考方案2】:

我确实最终使用了 offsetContent 属性;

我知道每个所谓的页面的宽度。

    我写了一段代码来获取当天的 indexPath 我检索到了 indexPath 的部分 我将截面乘以视图的宽度并将其命名为“偏移” 我将 UICollectionView.contentOffset.x 设置为“offset”,它工作正常。

我也尝试使用 .scrollRectToVisible 和偏移量,效果非常好,但我还想更新基于 UICollectionView 的 contentOffset 的内容,而 .scrollRectToVisible 似乎没有更新此属性 - 它仅更新在我稍微拖动视图之后。

感谢您的帮助!

【讨论】:

您能出示您的代码吗?我有类似的问题***.com/questions/45673446/…

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

UICollectionView 滚动到下一项

如何使用 UICollectionView 滚动到下一项

html Javascript滚动到下一页

使用 UICollectionView 的建议

无限滚动在向下滚动到下一页时出现模板错误

导航到下一页时,Chrome (iOS) 中的奇怪自动滚动/跳转行为