UICollectionView 在特定部分开始

Posted

技术标签:

【中文标题】UICollectionView 在特定部分开始【英文标题】:UICollectionView start in particular section 【发布时间】:2016-03-22 21:56:12 【问题描述】:

我有一个 UIViewController,其中有一个 UICollectionView,它用于日历。我在今天的日期附近添加了一个缓冲区,并在未来 3 个月和一年后获得。当视图出现在第一个日期(3 个月前)时。有没有办法让 UICollectionView 出现在 ViewController 显示的后面部分(对我来说是第 3 部分)中?

我尝试在 ViewController 的 viewDidAppear 中使用没有动画的 scrollToItemAtIndexPath 并且它有效,但是您可以看到日历更改月份,如果我将它放在 viewWillAppear 中,它似乎没有任何影响。

我确实通过将它放在 viewDidLayoutSubviews 中来让它工作,但它似乎在 ViewController 出现时被调用了几次,这是正确的地方吗?

如果有帮助,我正在使用 Swift 和 Xcode 7.2。

【问题讨论】:

【参考方案1】:
override func viewWillAppear(animated: Bool) 
  self.view.layoutIfNeeded()
  self.scrollToItemAtIndexPath(indexPathToScrollTo)

【讨论】:

我试过 viewDidAppear() 但它会导致collectionView在视图完成出现后发生变化,而不仅仅是之前,所以你可以看到日历的变化。 抱歉,您可以在 viewWillAppear 中尝试一下吗?我犯了一个错误,我正在更新答案。

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

如何使 UICollectionview 出现在特定部分

调整 UICollectionView 中特定部分的插图

Swift 中特定部分的 UICollectionView 粘性标头

将 UICollectionView 部分中的所有项目替换为一项(组合单元格)

UICollectionView 页眉和页脚视图

如何使用viewForSupplementaryElementOfKind - swift显示UICollectionView的特定单元格