UICollectionView:ScrollToItem到中心单元格不适用于水平集合视图

时间:2018-05-08 11:00:20

标签: ios swift uicollectionview uikit

我有一个带有内容偏移的水平UICollectionView,因此每个元素(包括最左边的项目)都可以滚动到中心:

let cvOffset = (UIScreen.main.bounds.width - tileSize) / 2
collectionView.contentInset = UIEdgeInsets(top: 0, left: cvOffset, bottom: 0, right: cvOffset)
collectionView.scrollIndicatorInsets = UIEdgeInsets(top: 0, left: cvOffset, bottom: 0, right: cvOffset)

但是,当我使用scrollToItem方法时,它只适用于项目的右半部分。如果我选择左半部分的任何项目,则输入第一个单元格。你知道为什么吗?

collectionView.scrollToItem(at: IndexPath.init(row: sender.tag, section: 0), at: .centeredHorizontally, animated: true)

1 个答案:

答案 0 :(得分:4)

不确定这是UICollectionView中是否存在流量布局错误或以某种方式获得所需结果,但您可以通过将UICollectionViewFlowLayout s sectionInset设置为您的内容插页来执行您所需的操作然后scrollToItem将按预期工作:

请删除您的contentInset,然后将以下内容添加到您的布局中:

layout.sectionInset = UIEdgeInsets(top: 0, left: cvOffset, bottom: 0, right: cvOffset)

在我的测试应用中,它完成了应有的操作,因此滚动到所选的单元格并以所有indexPath为中心