mli*_*956 2 objective-c ios uicollectionview
我有一个 UICollectionView,每个页面的大小与屏幕完全相同。滚动方向是水平的。我想在视图滚动时获取当前可见的单元格。
例如,如果我在一个完整的页面上,我只得到这个页面的索引,如果我在两页的中间滚动,那么我可以得到这两个页面的索引。我知道有indexPathsForVisibleItems方法。它适用于在中间滚动时的情况。它将返回两个单元格的索引。
但是如果我在整个页面上,它也会返回两页。更奇怪的是,这发生在我的 iPhone 7 Plus 上,但是当我在 iPhone 6s 上测试时,它工作正常并返回当前页面的单个索引。
似乎该方法不适用于大屏幕?
我的收藏视图:
CGSize screenSize = [UIScreen mainScreen].fixedBounds.size;
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
flowLayout.minimumLineSpacing = 0.0;
flowLayout.minimumInteritemSpacing = 0.0;
flowLayout.itemSize = screenSize;
UIColloctionView *collectionView =
[[UICollectionView alloc] initWithFrame:SCRectMakeWithSize(screenSize) collectionViewLayout:flowLayout];
collectionView.backgroundColor = [UIColor clearColor];
collectionView.scrollsToTop = NO;
collectionView.pagingEnabled = YES;
collectionView.showsHorizontalScrollIndicator = NO;
collectionView.showsVerticalScrollIndicator = NO;
Run Code Online (Sandbox Code Playgroud)
我用来获取当前可见索引的方法:
NSArray<NSIndexPath *> *indexPaths = [_tabsCollectionView indexPathsForVisibleItems];
Run Code Online (Sandbox Code Playgroud)
在较大的屏幕上,当我查看整个页面时,这将返回 2 个项目。
甚至我也面临着类似的问题。
对我有用的解决方法如下
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)
Run Code Online (Sandbox Code Playgroud)
希望这个解决方案对你有用。
| 归档时间: |
|
| 查看次数: |
2611 次 |
| 最近记录: |