我有一个UICollectionView,由1月到12月的12个单元格组成,如下面的屏幕截图所示:
如何让当前月份始终位于集合视图的中心?例如,Dec将显示在本月的中心。
其中一个解决方案是自动滚动到下一页并将第12个单元格居中,但我该如何实现呢?
答案 0 :(得分:1)
您可以使用cellForItem
函数来定义单元格的显示方式,使用UICollectionView函数reloadData()
来更新所有单元格,这是您认为必要的。
如果12月应该是中间的单元格,请确保在12月之前有5或6个单元格,您应该能够在cellForItem
内的简单条件下执行此操作。
例如,因为你有12个单元格,你可以得到当前月份和整数(12月12),你会知道第一个月将是12 - 6 = 6(6月),所以你可以做每个indexPath的计算。
简化工作:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = ...
let month = GetCurrentMonthAsInteger()
var cellMonth = month - 6 + indexPath.row //or section if you have 12 sections
if(cellMonth < 1) {cellMonth = 12 + cellMonth}
else if(cellMonth > 12) {cellMonth = cellMonth - 12}
cell.setInformationForMonth(cellMonth)
...
return cell
}
答案 1 :(得分:0)
您可以尝试将细胞和线的最小间距设为零