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
也不会将图像更改为我想要的图像,但也会使图像显示错误的大小。