在设置scrollToItem(Swift)之后,UICollectionView在手动滚动上跳转

时间:2019-05-09 12:39:45

标签: swift uicollectionview

我设法将UICollectionView设置为使用的所需位置

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

但是,例如,如果我从右侧向左滑动,它会滑动,但是UIImage会跳回到右侧,然后正确地向左滑动。启用或不启用分页都会发生这种情况(我正在使用分页)。

还有什么我应该设置的吗?

2 个答案:

答案 0 :(得分:2)

此行

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

应该在viewDidLayoutSubviews外部,因为每次布局绘制都将调用该调用,并调用同一行并导致闪烁,因此请在viewWillAppear/viewDidAppear

内部进行尝试

答案 1 :(得分:0)

我设法使用布尔标志和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)
    }
}