ios - 第一次显示 View 之前的 scrollToItemAtIndexPath

标签 ios ios7 scroll uicollectionview

我有一个 UIView,我在其中添加了一个 UICollectionView。现在此 View 显示在应用程序启动时。同时,我滚动到我的收藏 View 中的某个位置。因此我使用 scrollToItemAtIndexPath。现在的问题是它滚动到错误的位置,因为 Collection View 一开始的大小错误:如果您在 iOS 7 上以横向启动 iPad,则 Collection View 始终采用 768 作为宽度,尽管它是横向的。

如何在用户不注意的情况下滚动到某个位置?我可以在 View 层次结构中的哪个位置调用它?

viewWillAppear: 帧还没有设置
viewDidAppear:在用户没有注意到的情况下是不可能的
layoutSubviews:这被调用了多次,我只在启动时和用户按下按钮时才需要它

我也尝试使用 layoutIfNeeded,但这对我的边缘情况(iOS 7、iPad、启动时横向)没有帮助。

最佳答案

约束在 viewDidAppearlayoutSubviews 最后一次被调用时启动。到那时为时已晚。

您可以尝试从 UICollectionView 继承您自己的类并查看其 layoutSubviews 是否具有正确的约束并从那里调用 scrollToIndex

如果失败,您可以通过在 viewDidLoad 中设置帧大小并调用 scroll to index 来作弊。 (这个有点复杂)-

关于ios - 第一次显示 View 之前的 scrollToItemAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31588761/

相关文章:

jquery - 滚动时将阴影应用于固定的顶部横幅

UITableViewCell 删除按钮被覆盖

ios - 如何在文本字段上双击键盘

javascript - 如何滚动到 <div> 内的特定文本索引

ios - Unity3D iOS Build 仅适用于部分 iPad

Xcode 6 - iOS8 中的远程通知

ListView 不在定位的小部件中滚动

html - 如何从 iOS 中的文件中解析 JSON?

ios - AnyObject 不可转换为 'String'

ios - 带有 URL Scheme 的谷歌地图?