【发布时间】:2015-11-24 16:16:06
【问题描述】:
我有一个 UICollectionViewController 的子类,它嵌套在 UINavigationController 中。该集合包含几个单元格(当前为 3 个),每个单元格与全屏一样大。
显示整个内容时,集合视图最初会滚动到特定单元格(每个单元格都可以完美运行):
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if let path = currentlyPresentedPhotoCellIndexPath { // this is set in the beginning
collectionView?.scrollToItemAtIndexPath(path, atScrollPosition: UICollectionViewScrollPosition.CenteredHorizontally, animated: false)
}
}
但是,此后,集合视图拒绝水平滚动,就好像禁用了用户交互一样。我不确定发生了什么,但这是我目前检查过的:
- 为集合视图启用用户交互
- 下一个单元格(右或左,取决于滚动方向)被正确请求,我通过检查
collectionView:cellForItemAtIndexPath:发现了这一点 - 请求的 imagePath 是正确的
-
如果我在加载所有内容后尝试以编程方式触发滚动,
scrollToItemAtIndexPath...也不起作用(没有任何反应) -
scrollRectToVisible...两者都没有 - 在程序化滚动尝试发生之前设置
collectionView?.contentInset = UIEdgeInsetsZero不会改变任何内容 - 集合视图的内容大小为 3072x768(= 3 个屏幕,即 3 个单元格)
这里缺少哪些要点?
【问题讨论】:
-
好吧,滚动发生在我发布的代码成功执行之后。因此,一切都已经布置好了。此外,自动滚动(基于用户手势,即不是通过编程方式触发)应该在任何情况下发生。
-
@Mr.T 我修改了我的评论:不是我的问题的完全解决方案,但绝对是指向正确方向的指针!
标签: ios swift uiscrollview uicollectionview