今天开发中遇到一个小问题:
需求:在UICollectionView在展示之前显示到具体的某一个Cell上
在viewWillAppear()中调用scrollToItem(at:at:animate)不会使collectionView滚动
override func viewWillAppear(_ animated : Bool) {
super.viewWillAppear(animated)
if let index = indexPathToShow {
//self.collectionView?.layoutIfNeeded()
self.collectionView?.scrollToItem(at: index, at:UICollectionViewScrollPosition.centeredHorizontally, animated:false)
}
}
原因可能是因为这个CollectionView使用了UICollectionViewFlowLayout
程序执行到scroll时这个CollectionView中很多(暂时不会用到的)subviews都还没有被layout,因此无法滚动到这个view上。
参考了StackOverFlow上的一个问题在scroll之前调用self.collectionView.layoutIfNeeded()
无论如何,它现在的确可以正常的滚动到正确的位置了