CollectionView.indexPathsForVisibleItems 获取不准确问题
问题描述: 类似抖音的全屏视频播放页面,滑动结束的回调方法里返回当前indexPath,然后去播放indexPath对应的视频,偶尔会出现返回的indexPath不对,造成播放问题。
问题定位: 通过查询,定位到 CollectionView.indexPathsForVisibleItems方法,有时候获取的item不是当前的item,是滑动前的那个.
问题解决:
//(偶尔会获取不准确的方法) The method i used to get current visible index:
NSArray<NSIndexPath *> *indexPaths = [_tabsCollectionView indexPathsForVisibleItems];
//解决方案:
//swift 3
var visibleRect = CGRect()
visibleRect.origin = collectionView.contentOffset
visibleRect.size = collectionView.bounds.size
let visiblePoint = CGPoint(x: visibleRect.midX, y: visibleRect.midY)
guard let visibleIndexPath: IndexPath = collectionView.indexPathForItem(at: visiblePoint) else { return }
print(visibleIndexPath)
//OC
CGRect visibleRect = CGRectZero;
visibleRect.origin = collectionView.contentOffset;
visibleRect.size = collectionView.bounds.size;
CGPoint visiblePoint = CGPointMake(CGRectGetMidX(visibleRect), CGRectGetMidY(visibleRect));
NSIndexPath *visibleIndexPath = [collectionView indexPathForItemAtPoint:visiblePoint];
print(visibleIndexPath);