我有一个 UICollectionView
包含在使用水平 UIViewController
的 UICollectionViewFlowLayout
中。我也在使用在我的 UIStoryboard
中创建的原型(prototype)单元格。我想创建一个自定义分页,所以我使用 - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
。
问题是,每次我尝试获取与 targetContentOffset(滚动 View 中滚动将停止的点)对应的 indexPath
时,即使该点显然位于集合 View contentSize 内,集合 View 也会返回 nil。
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
NSIndexPath *indexPath = [_collectionView indexPathForItemAtPoint:(*targetContentOffset)];
// Do something with indexPath
}
我究竟做错了什么?
最佳答案
collectionView 还不知道 targetContentOffset 的 indexPath。
您必须要求 collectionViewLayout 为您提供将在此位置布局的项目的属性。
尝试这样的事情:
UICollectionViewLayoutAttributes *attribute = [_collectionView.collectionViewLayout layoutAttributesForElementsInRect:(CGRect){(*targetContentOffset).x, 0, 10, self.collectionView.bounds.size.height}][0];