菜鸟教程小白 发表于 2022-12-13 14:53:43

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


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

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

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

<p>似乎该方法不适用于大屏幕?</p>

<p>我的收藏 View :</p>

<pre><code>    CGSize screenSize = .fixedBounds.size;
    UICollectionViewFlowLayout *flowLayout = [ init];
    flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
    flowLayout.minimumLineSpacing = 0.0;
    flowLayout.minimumInteritemSpacing = 0.0;
    flowLayout.itemSize = screenSize;

    UIColloctionView *collectionView =
      [ initWithFrame:SCRectMakeWithSize(screenSize) collectionViewLayout:flowLayout];
    collectionView.backgroundColor = ;
    collectionView.scrollsToTop = NO;
    collectionView.pagingEnabled = YES;
    collectionView.showsHorizontalScrollIndicator = NO;
    collectionView.showsVerticalScrollIndicator = NO;
</code></pre>

<p>我用来获取当前可见索引的方法:</p>

<pre><code>    NSArray&lt;NSIndexPath *&gt; *indexPaths = ;
</code></pre>

<p>在大屏幕上,当我查看整个页面时,这将返回 2 个项目。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>即使我也面临着类似的问题。</p>

<p>对我有用的解决方法如下</p>

<p><strong>Swift 3</strong> <strong>解决方案</strong></p>

<pre><code>    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)
</code></pre>

<p>希望此解决方案适合您。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - UICollectionView indexPathsForVisibleItems 在某些情况下不起作用,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/42173171/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/42173171/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - UICollectionView indexPathsForVisibleItems 在某些情况下不起作用