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

UICollectionView在scrollToItem设置(Swift)后手动滚动跳转,swift,uicollectionview,Swift,Uicollectionview,我设法使用以下命令将我的UICollectionView设置到所需的位置 override func viewDidLayoutSubviews() { collectionView.scrollToItem(at:IndexPath(item: itemIndex, section: 0), at: .centeredHorizontally, animated: false) } 但是,例如,如果我从右手侧向左滑动,它会滑动,但是UIImage会跳回右侧,然后正确地向左滑动。无论是

我设法使用以下命令将我的
UICollectionView
设置到所需的位置

override func viewDidLayoutSubviews() {
    collectionView.scrollToItem(at:IndexPath(item: itemIndex, section: 0), at: .centeredHorizontally, animated: false)
}
但是,例如,如果我从右手侧向左滑动,它会滑动,但是
UIImage
会跳回右侧,然后正确地向左滑动。无论是否启用分页,都会发生这种情况(我使用的是分页)

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

这行

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

应该在
viewDidLayoutSubviews
之外,因为它是为调用同一条线并导致闪烁的每个布局绘制调用的,所以请在
ViewWillDisplay/viewDidLayoutSubviews
之内尝试,我使用布尔标志和
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)
    }
}

相关但在重写方法时不要忘记
super.viewdilayoutsubviews()
Hi@Sh_Khan谢谢。使用
视图将出现
导致奇怪的视觉效果。但是,使用
viewdideappear
是可行的,但是现在我在显示所需图像之前,先看到第一个图像一两秒钟。有什么方法可以解决这个新问题吗?将
at:.centered水平
更改为
at:.bottom
。bottom
。top
根本不显示所需的图像,而
。left
。right
和。
centerehorizontally
仍然延迟图像更改。注意:使用
viewwillbeen
也不会将图像更改为我想要的图像,但也会使图像显示错误的大小。