UICollectionView переходит на ручную прокрутку после установки scrollToItem (Swift) - PullRequest
1 голос
/ 09 мая 2019

Мне удалось заставить мой UICollectionView установить желаемое положение с помощью

override func viewDidLayoutSubviews() {
    collectionView.scrollToItem(at:IndexPath(item: itemIndex, section: 0), at: .centeredHorizontally, animated: false)
}

, но, например, если я смещусь влево от правой стороны, он скользит, но затем UIImage прыгает назад вправо, прежде чем скользить влево должным образом.Это происходит с включенной или без подкачки (я использую подкачку).

Есть ли что-то еще, что я должен установить?

Ответы [ 2 ]

2 голосов
/ 09 мая 2019

Эта строка

collectionView.scrollToItem(at:IndexPath(item: itemIndex, section: 0), at: .centeredHorizontally, animated: false)

должно быть за пределами viewDidLayoutSubviews, так как он вызывается для каждого макета, который вызывает одну и ту же линию и вызывает мерцание, поэтому попробуйте внутри viewWillAppear/viewDidAppear

0 голосов
/ 09 мая 2019

Мне удалось решить проблему с помощью логического флага и viewDidLayoutSubviews(), таким образом

var layoutDone: Bool = false

override func viewDidLayoutSubviews() {

    super.viewDidLayoutSubviews()

    if(!layoutDone) {

        layoutDone = true

        collectionView.scrollToItem(at:IndexPath(item: itemIndex, section: 0), at: .centeredHorizontally, animated: false)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...