UICollectionView自动滚动到IndexPath的单元格
在加载集合视图之前,用户设置集合视图数组中图像的数量。 所有的单元格都不适合在屏幕上。 我有30个单元,屏幕上只有6个。
问题:如何在UICollectionView的加载时自动滚动到具有所需图像的单元格?
新增,编辑答案:
将其添加到viewDidLayoutSubviews
-(void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:NO];
}
旧的答案适用于较旧的iOS
添加这个viewWillAppear
:
[self.view layoutIfNeeded];
[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:NO];
我发现在viewWillAppear中的滚动可能无法可靠地工作,因为集合视图还没有完成它的布局; 您可能会滚动到错误的项目。
我还发现,viewDidAppear中的滚动会导致未滚动视图的瞬间闪烁可见。
而且,如果每次通过viewDidLayoutSubviews滚动,则用户将无法手动滚动,因为每次滚动时,某些集合布局会导致子视图布局。
以下是我发现的可靠工作:
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
// If we haven't done the initial scroll, do it once.
if (!self.initialScrollDone) {
self.initialScrollDone = YES;
[self.collectionView scrollToItemAtIndexPath:self.myInitialIndexPath
atScrollPosition:UICollectionViewScrollPositionRight animated:NO];
}
}
我完全同意上面的答案。 唯一的解决方法是在viewDidAppear中设置代码
viewDidAppear
{
[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:YES];
}
当我使用viewWillAppear时,滚动不起作用。
链接地址: http://www.djcxy.com/p/91635.html上一篇: UICollectionView auto scroll to cell at IndexPath
下一篇: iOS UICollectionView prototype cell size property ignored