第一次显示视图之前的scrollToItemAtIndexPath

时间:2015-07-23 13:26:18

标签: ios ios7 scroll uicollectionview

我有一个if(NonAllowedCLEOFiles.Any()) MessageBox.Show(String.Join(", ", NonAllowedCLEOFiles.Select(x=>x.Name))); 我在其中添加了UIView。现在这个视图显示在app启动时。同时我在我的集​​合视图中滚动到某个位置。因此我使用UICollectionView。现在的问题是它滚动到错误的位置,因为集合视图的开头大小错误:如果你在iOS 7上以横向方向启动iPad,那么集合视图总是需要768作为宽度,尽管它是横向的。

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

scrollToItemAtIndexPath:尚未设置框架 viewWillAppear:如果没有用户注意到它,就不可能 viewDidAppear:这被多次调用,我只需要在启动时和用户按下按钮

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

1 个答案:

答案 0 :(得分:1)

最后一次调用时间viewDidAppearlayoutSubviews的约束。到那时为时已晚。

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

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