UICollectionView 在 scrollToItemAtIndexPath 之后水平滚动:
UICollectionView Horizontal Scroll after scrollToItemAtIndexPath:
我有一组图像显示在类似于 Instagram 个人资料页面的 collectionView 中。当图像被 selected 时,indexPath.row
被传递到下一个 collectionView,我在其中使用相同的数组和传递的 indexPath.row
来知道要在整个屏幕上显示什么图像。
- (void)viewDidLayoutSubviews{
[self.view layoutIfNeeded];
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:self.selectedImage inSection:0];
[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:NO];
}
图像出现了,但我无法在其余图像之间水平滚动。启用分页并且每个单元格都足够大以占据屏幕。如果我注释掉上面的代码,我就可以滚动浏览所有图像。当你 select 一个人的图像并且能够滚动浏览其余图像而不是 x'ing out 并 select 单独
我相信只要重新使用集合视图单元格,就会调用 viewDidLayoutSubviews
。因此,当它尝试重新使用该单元格时,它会运行强制它滚动回该项目的代码,这意味着滚动视图永远不会移动 :) 我认为您需要确保滚动到该项目只被调用一次。
要对此进行测试...请尝试在上面的代码中放置一个断点,然后查看是否在您尝试水平滚动时再次调用它。
我有一组图像显示在类似于 Instagram 个人资料页面的 collectionView 中。当图像被 selected 时,indexPath.row
被传递到下一个 collectionView,我在其中使用相同的数组和传递的 indexPath.row
来知道要在整个屏幕上显示什么图像。
- (void)viewDidLayoutSubviews{
[self.view layoutIfNeeded];
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:self.selectedImage inSection:0];
[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:NO];
}
图像出现了,但我无法在其余图像之间水平滚动。启用分页并且每个单元格都足够大以占据屏幕。如果我注释掉上面的代码,我就可以滚动浏览所有图像。当你 select 一个人的图像并且能够滚动浏览其余图像而不是 x'ing out 并 select 单独
我相信只要重新使用集合视图单元格,就会调用 viewDidLayoutSubviews
。因此,当它尝试重新使用该单元格时,它会运行强制它滚动回该项目的代码,这意味着滚动视图永远不会移动 :) 我认为您需要确保滚动到该项目只被调用一次。
要对此进行测试...请尝试在上面的代码中放置一个断点,然后查看是否在您尝试水平滚动时再次调用它。