2016-01-18 47 views
4

是否有机会使用UICollectionView滚动到想要的项目。 scrollToItemAtIndexPath并且不是捕获到项目本身,而是捕获到项目所属的页面? (我得到了分页功能。)UICollectionView - 滚动到下一页

干杯

+0

这是什么意思的项目的页面? –

+0

每页都有固定数量的收集单元吗? –

+0

是的,该项目的页面。我有页面显示特定的月份(这是一个日历)。但是(几乎)每个月都是从不同的日子(星期五,星期一等)开始的,我想滚动到包含当天的部分(月份)。所以,如果我想滚动到(假设现在是2015年12月14日),它会显示如下:https://imgur.com/TiDWW8X - 这就是为什么我要将它记录到当前页/节 – Ancinek

回答

4

您需要创建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) 
    } 
} 
+0

我添加了以上关于该项目的评论 – Ancinek

+0

已更新的答案。 –

+0

但事情是它不会捕捉到页面。它确实滚动到单元格本身,这很好,但对于位于页面中心的单元格(部分),我可以看到:imgur.com/TiDWW8X。此外,我不知道如果它很重要,但我不希望在点击后发生这种情况,我希望它在加载视图时发生 - 所以我试图在viewDidAppear中实现此.scrollToItemAtIndexPath – Ancinek

2

我确实使用了offsetContent属性;

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

  1. 我写了一个代码来获取indexPath为当天
  2. 我检索到的indexPath
  3. 我乘上视图的宽度的部分,并把它命名的一节“偏移”
  4. 我设置我的UICollectionView.contentOffset.x为“偏移量”,它工作正常。

我也尝试过使用.scrollRectToVisible和偏移,而且令人惊讶的工作,但我也想更新的东西,是基于UICollectionView的contentOffset和.scrollRectToVisible似乎没有更新该属性 - 它只是在我稍微拖动视图后才更新。

感谢您的帮助!

+0

你能否显示你的代码?我有类似的问题https://stackoverflow.com/questions/45673446/uicollectionview-offscreen-auto-scroll-for-paging – Maulik