UICollectionView滚动错误

时间:2018-12-06 06:56:49

标签: ios swift scroll uicollectionview

我已经启用了分页的全屏显示视图:

这是我在代码中进行配置的方式:

    let layout = UICollectionViewFlowLayout()
    layout.minimumInteritemSpacing = 0.0
    layout.minimumLineSpacing = 0.0
    layout.itemSize = UIScreen.main.bounds.size
    layout.scrollDirection = UICollectionViewScrollDirection.horizontal
    layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0)

    allQuotesCollectionView.collectionViewLayout = layout

在我的情节提要中:

CollectionView setup

我遇到的问题是首次滚动加载屏幕时,滚动动画中存在错误:

Animation Bug

此错误发生后,滚动变得平滑。 我怎样才能解决这个问题?我也使用过Github Framework,但没有帮助。我需要任何可能的解决方案。

感谢您的帮助,非常感谢。

1 个答案:

答案 0 :(得分:0)

经过3到4天的艰苦奋战,终于找到了原因:

我的错误在这里:

override func viewDidLayoutSubviews() {
    let midIndexPath = IndexPath(row: infiniteSize / 2, section: 0)
    allQuotesCollectionView.scrollToItem(at: midIndexPath, at: .centeredHorizontally, animated: false)
}

将这段代码移至viewDidAppear方法后,所有内容开始起作用,并且错误消失了。

所以,我现在的最终代码如下:

override func viewDidAppear(_ animated: Bool) {
    let layout = UICollectionViewFlowLayout()
    layout.minimumInteritemSpacing = 0.0
    layout.minimumLineSpacing = 0.0
    layout.itemSize = UIScreen.main.bounds.size
    layout.scrollDirection = UICollectionViewScrollDirection.horizontal
    layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0)

    allQuotesCollectionView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)
    allQuotesCollectionView.collectionViewLayout = layout
    allQuotesCollectionView.isPagingEnabled = true

    let midIndexPath = IndexPath(row: infiniteSize / 2, section: 0)
    allQuotesCollectionView.scrollToItem(at: midIndexPath, at: .centeredHorizontally, animated: false)

    DispatchQueue.main.asyncAfter(deadline: .now() + 0.25, execute: {
        UIView.transition(with: self.view, duration: 1, options: .transitionCrossDissolve, animations: {
            self.allQuotesCollectionView.isHidden = false
        })
    })
}

我猜想您需要在屏幕上加载了分页功能(主要是开始索引)之后设置集合视图。

希望这会在将来对某人有所帮助!