我有一个 UIView
,我在其中添加了一个 UICollectionView
。现在此 View 显示在应用程序启动时。同时,我滚动到我的收藏 View 中的某个位置。因此我使用 scrollToItemAtIndexPath
。现在的问题是它滚动到错误的位置,因为 Collection View 一开始的大小错误:如果您在 iOS 7 上以横向启动 iPad,则 Collection View 始终采用 768 作为宽度,尽管它是横向的。
如何在用户不注意的情况下滚动到某个位置?我可以在 View 层次结构中的哪个位置调用它?
viewWillAppear
: 帧还没有设置
viewDidAppear
:在用户没有注意到的情况下是不可能的
layoutSubviews
:这被调用了多次,我只在启动时和用户按下按钮时才需要它
我也尝试使用 layoutIfNeeded
,但这对我的边缘情况(iOS 7、iPad、启动时横向)没有帮助。
最佳答案
约束在 viewDidAppear
和 layoutSubviews
最后一次被调用时启动。到那时为时已晚。
您可以尝试从 UICollectionView 继承您自己的类并查看其 layoutSubviews
是否具有正确的约束并从那里调用 scrollToIndex
。
如果失败,您可以通过在 viewDidLoad
中设置帧大小并调用 scroll to index 来作弊。 (这个有点复杂)-
关于ios - 第一次显示 View 之前的 scrollToItemAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31588761/