第一次显示视图之前的 scrollToItemAtIndexPath
scrollToItemAtIndexPath before the view is shown the first time
我有一个 UIView
,我在其中添加了一个 UICollectionView
。现在此视图显示在应用程序启动时。同时,我滚动到 collection 视图中的某个位置。因此我使用 scrollToItemAtIndexPath
。现在的问题是它滚动到错误的位置,因为 collection 视图在开始时有错误的大小: 如果你在 iOS 上以横向启动 iPad 7 collection 视图始终采用 768 作为宽度,尽管它是横向的。
如何在用户不注意的情况下滚动到某个位置?我可以在视图层次结构中的哪个位置调用它?
viewWillAppear
: 帧未设置
viewDidAppear
:不可能没有用户注意到它
layoutSubviews
:这被调用了多次,我只在启动时和用户按下按钮时才需要它
我也尝试使用 layoutIfNeeded
,但这对我的边缘情况没有帮助(iOS 7,iPad,启动时横向)。
约束在 viewDidAppear
和 layoutSubviews
最后一次调用时开始。到时候就晚了。
您可以尝试从 UICollectionView 继承您自己的 class 并查看其 layoutSubviews
是否具有正确的约束并从那里调用 scrollToIndex
。
如果失败,您可以通过在 viewDidLoad
中设置帧大小并调用 scroll to index 来作弊。 (这个有点复杂)–
我有一个 UIView
,我在其中添加了一个 UICollectionView
。现在此视图显示在应用程序启动时。同时,我滚动到 collection 视图中的某个位置。因此我使用 scrollToItemAtIndexPath
。现在的问题是它滚动到错误的位置,因为 collection 视图在开始时有错误的大小: 如果你在 iOS 上以横向启动 iPad 7 collection 视图始终采用 768 作为宽度,尽管它是横向的。
如何在用户不注意的情况下滚动到某个位置?我可以在视图层次结构中的哪个位置调用它?
viewWillAppear
: 帧未设置
viewDidAppear
:不可能没有用户注意到它
layoutSubviews
:这被调用了多次,我只在启动时和用户按下按钮时才需要它
我也尝试使用 layoutIfNeeded
,但这对我的边缘情况没有帮助(iOS 7,iPad,启动时横向)。
约束在 viewDidAppear
和 layoutSubviews
最后一次调用时开始。到时候就晚了。
您可以尝试从 UICollectionView 继承您自己的 class 并查看其 layoutSubviews
是否具有正确的约束并从那里调用 scrollToIndex
。
如果失败,您可以通过在 viewDidLoad
中设置帧大小并调用 scroll to index 来作弊。 (这个有点复杂)–