UICollectionView 无法滚动到指定位置/指定Cell

今天开发中遇到一个小问题:

需求:在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()

无论如何,它现在的确可以正常的滚动到正确的位置了

参考:http://stackoverflow.com/questions/14977896/xcode-collectionviewcontroller-scrolltoitematindexpath-not-working

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容