Почему Collection View загружает центр карусели с этим кодом? - PullRequest
1 голос
/ 13 апреля 2019

Я пытался выяснить, как заставить мое представление коллекции из 3 ячеек загружаться со 2-й ячейкой, и я наконец понял это после просмотра StackOverFlow.Однако код, с которым я столкнулся, немного смущает меня.Может ли кто-нибудь объяснить, почему этот код, приведенный ниже, работает, чтобы моя ячейка представления коллекции (охватывающая весь экран) начиналась с 2-й из 3-х ячеек?(это эффект, которого я хотел добиться с самого начала, но я хочу узнать больше о том, почему этот код работает точно.

В этом блоке кода есть переменная bool и оператор if, зачем они нужны? Когда я вынул логическую переменную и оператор if, представление коллекции не смогло прокрутить.

Как этот блок кода работает точно?

Спасибо.

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 Ответ

0 голосов
/ 13 апреля 2019

1- Это scrollToItem в Документах

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

делает collectionView прокрутки ко второму элементу в списке

2-

Когда я вынул булеву переменную и оператор if, представление коллекции не смогло прокрутить

Поскольку willDisplay вызывается для каждого отображения ячейки, поэтому, например, когда вы прокручиваете до 3-гоЯчейка willdisplay вызывается и заставляет collectionView переходить во вторую ячейку, поэтому она постоянно застревает во втором элементе (и это похоже на отсутствие прокрутки, но прокрутка происходит, и вы не заметите, как это происходитмгновенно), поэтому логическое значение var необходимо для того, чтобы действие прокрутки происходило один раз, то есть при прокрутке до указанного индекса

...