UICollectionView 没有滚动到 indexPath

Posted

技术标签:

【中文标题】UICollectionView 没有滚动到 indexPath【英文标题】:UICollectionView isn't scrolling to indexPath 【发布时间】:2015-06-04 22:33:12 【问题描述】:

我有一个UICollectionView,我将translatesAutoresizingMaskIntoConstraints 设置为NO,并添加了一些constraints。当我尝试将其滚动到 indexPath:

[self.datesCollectionView selectItemAtIndexPath:selectedCellIndexPath animated:YES scrollPosition:UICollectionViewScrollPositionCenteredHorizontally];

然后它完全忽略了这一点,并且不滚动。但是当我删除translatesAutoresizingMaskIntoConstraints 时,它会滚动,但会忽略约束。

我的问题是,当translatesAutoresizingMaskIntoConstraints 设置为NO 时,如何让collectionView 滚动到indexPath

【问题讨论】:

单元格是否被选中,或者您没有看到任何效果?您有多少个单元格,一次屏幕上有多少个单元格? 单元格被选中,当它们被手动选中时,它们会滚动到中心。我总共有大约 365 个cells。 6 cells 可见。 你不应该做任何特别的事情来让它工作。它适用于我使用你的约束(来自你之前的问题)。我的测试应用程序来证明这一点,jmp.sh/XmzrjzY 感谢您的回复!!这是一个有问题的项目的链接:jmp.sh/ZFJrPl7 您链接到的项目不包含集合视图。 【参考方案1】:

查看您的代码后,我发现了问题。我不确定为什么会这样,但是在应用约束后集合视图的contentSize 为零。添加对layoutIfNeeded 的调用到setSelectedDate:setDates: 解决了问题,

- (void)setDates:(NSArray *)dates 
    _dates = dates;
    [self.datesCollectionView layoutIfNeeded];
    [self.datesCollectionView reloadData];

    self.selectedDate = nil;

【讨论】:

以上是关于UICollectionView 没有滚动到 indexPath的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法自动滚动到 UICollectionView 的底部

UICollectionView 滚动到没有动画的最后一项

有没有办法自动滚动到UICollectionView的底部

滚动到 UICollectionView 中启用分页的页面

UICollectionView滚动性能使用AFNetworking加载图片

知道 UICollectionView 是不是正在滚动