如何在中心布局集合单元?

Posted

技术标签:

【中文标题】如何在中心布局集合单元?【英文标题】:How to layout collection cell in center? 【发布时间】:2018-08-08 10:44:12 【问题描述】:

我正在尝试将收集单元格设置在屏幕中心,但没有得到我想要的结果。

1.我想要的结果

2。当前输出

我尝试了下面的代码,但没有工作。

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
    return CGSize.init(width: 80, height: 80)


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets 
    let totalCellWidth = 80 * 3
    let totalSpacingWidth = 10 * (3 - 1)

    let leftInset = (collectionView.frame.size.width - CGFloat(totalCellWidth + totalSpacingWidth)) / 2
    let rightInset = leftInset

    return UIEdgeInsetsMake(0, leftInset, 0, rightInset)

更新了以下内容以便更好地理解。

6 个项目应该是这样的

|x x x|
|x x x|

对于 5 个项目,它应该看起来像这样

|x x x|
| x x |

4 个项目应该是这样的

|x x x|
|  x  |

【问题讨论】:

只需将适当的内容或部分插入设置为UICollectionView @SPatel 请查看我更新的问题。谢谢! 为什么你在 UICollectionView 中使用这个小数字? UIView ?? 【参考方案1】:

试试下面的代码:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets 
    let cellWidth : CGFloat = 80 * 3

    let numberOfCells = floor(self.view.frame.size.width / cellWidth)
    let edgeInsets = (self.view.frame.size.width - (numberOfCells * cellWidth)) / (numberOfCells + 1)

    return UIEdgeInsetsMake(15, edgeInsets, 0, edgeInsets)

【讨论】:

是的,亲爱的,我试过了。但无法根据我的需要工作,请检查我更新的问题以获得更清晰的信息。

以上是关于如何在中心布局集合单元?的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 实现自定义集合视图布局

如何布局单行集合视图?

如何通过自动布局设置集合视图单元格大小

如何使用故事板中定义的单元格计算集合视图单元格高度?

集合视图设计布局 Ios

设备方向更改时如何重新排列集合视图单元格