为什么 Collection View 使用此代码加载中心轮播?

Why does Collection View load center carousel with this code?

我一直在想办法让我的 3 个单元格的集合视图加载第二个单元格,在查看 Whosebug 后我终于弄明白了。但是,我遇到的代码让我有点困惑。谁能解释为什么下面的代码可以使我的集合视图单元格(覆盖整个屏幕)从 3 个单元格中的第 2 个开始? (这是我一直想达到的效果,但我想更多地了解为什么这段代码能正常工作。

在这段代码中,有一个bool变量和一个if语句,为什么需要它们?当我取出boolean变量和if语句时,collection view无法滚动

这段代码是如何工作的?

谢谢。

var onceOnly = false

internal override func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
    if !onceOnly {
        let indexToScrollTo = IndexPath(item: 1, section: 0)
        self.collectionView.scrollToItem(at: indexToScrollTo, at: .left, animated: false)
        onceOnly = true
    }
}

1- scrollToItemDocs

let indexToScrollTo = IndexPath(item: 1, section: 0)
self.collectionView.scrollToItem(at: indexToScrollTo, at: .left, animated: false)

使 collectionView 滚动到列表中的第二项

2-

When I took out the boolean variable and if statement, the collection view was unable to scroll

因为每个单元格显示都会调用 willDisplay,所以当您滚动到第 3 个单元格时,调用 willdisplay 并导致 collectionView 转到第二个单元格,所以它会卡住一直在第二项中(这似乎没有滚动,但滚动发生了,你不会注意到它是立即发生的),所以需要布尔变量来使滚动动作发生一次,即滚动到指定索引