• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - UICollectionView indexPathsForVisibleItems 在某些情况下不起作用

[复制链接]
菜鸟教程小白 发表于 2022-12-13 14:53:43 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个 UICollectionView,每个页面的大小都与屏幕完全相同。滚动方向是水平的。我想在 View 滚动时获取当前可见的单元格。

例如,如果我在一整页上,我只是得到这个页面的索引,如果我在两页中间滚动,那么我可以得到这两个页面的索引。我知道有 indexPathsForVisibleItems 方法。它适用于在中间滚动时的情况。它将返回两个单元格的索引。

但如果我在整个页面上,它也会返回两个页面。更奇怪的是,这发生在我的 iPhone 7 Plus 上,但是当我在 iPhone 6s 上测试它时,它工作正常并返回当前页面的单个索引。

似乎该方法不适用于大屏幕?

我的收藏 View :

    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;

我用来获取当前可见索引的方法:

    NSArray<NSIndexPath *> *indexPaths = [_tabsCollectionView indexPathsForVisibleItems];

在大屏幕上,当我查看整个页面时,这将返回 2 个项目。



Best Answer-推荐答案


即使我也面临着类似的问题。

对我有用的解决方法如下

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)

希望此解决方案适合您。

关于ios - UICollectionView indexPathsForVisibleItems 在某些情况下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42173171/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap