如何在UICollectionView中居中?

时间:2017-12-06 04:53:58

标签: ios objective-c uicollectionview

我有一个UICollectionView,由1月到12月的12个单元格组成,如下面的屏幕截图所示:

enter image description here

如何让当前月份始终位于集合视图的中心?例如,Dec将显示在本月的中心。

其中一个解决方案是自动滚动到下一页并将第12个单元格居中,但我该如何实现呢?

2 个答案:

答案 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)

您可以尝试将细胞和线的最小间距设为零