UICollectionView:ScrollToItem 到中心单元格在水平集合视图上不起作用
Posted
技术标签:
【中文标题】UICollectionView:ScrollToItem 到中心单元格在水平集合视图上不起作用【英文标题】:UICollectionView: ScrollToItem to center cell does not work on horizontal collection view 【发布时间】:2018-05-08 11:00:19 【问题描述】:我有一个带有内容偏移的水平 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)
【问题讨论】:
我已经直接使用setContentOffset
来代替
【参考方案1】:
不确定这是否是 UICollectionView
中的错误与流布局或某种期望的结果,但您可以通过将 UICollectionViewFlowLayout
s sectionInset
设置为您的内容插入然后 scrollToItem
来做您需要的事情按预期工作:
所以删除你的 contentInset
并在你的布局中添加以下内容:
layout.sectionInset = UIEdgeInsets(top: 0, left: cvOffset, bottom: 0, right: cvOffset)
在我的测试应用程序中,它完成了它应该做的事情,因此滚动到选定的单元格并为所有 indexPath
s 居中
【讨论】:
哇,感谢您提供的出色解决方案!这非常有效! 太棒了!很高兴我能提供帮助,而且我也学到了一些新东西,我确信contentOffset
的方式应该可行,但它没有:)以上是关于UICollectionView:ScrollToItem 到中心单元格在水平集合视图上不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Cypress web自动化30-操作窗口滚动条(scrollTo)
如何使用平滑效果的 window.scrollTo() [关闭]