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 - 滚动到下一页的主要内容,如果未能解决你的问题,请参考以下文章