当所有单元格的大小不同时,如何使 UICollectionView 的单元格换行?

How do I make a UICollectionView's cells wrap when all cells are not the same size?

我有一个 UICollectionView,我希望单元格显示在这样的网格中:

我做了一些工作来计算单元格的大小,给定单元格之间的 16px 填充,但我似乎无法弄清楚如何让单元格按照我想要的方式包裹。这是我当前 UI 的屏幕截图。当我计算尺寸中的扭结时,颜色目前是一个占位符。蓝色为透明,红色为图像。

我正在使用 collectionView sizeForItemAt 来计算每个单元格的大小。

在 Interface Builder 中,集合视图具有以下设置:

我确实尝试减小较小单元格的大小,看看它们是否会弹出(我想象 float 在 CSS 中的工作原理),但没有帮助。它们只是在它们当前所在的行中变得更小,直到它们小到足以容纳右上角的 3 个小的。

任何指导将不胜感激。

编辑 1:

我刚想把滚动方向设置为水平而不是垂直,这样更接近,但仍然不正确。我实际上并没有指定我想要单元格之间有 16 像素的间距,尽管这是计算单元格大小的依据。我该怎么做?

我认为在您的情况下,最好通过子类化 UICollectionViewLayout 为集合视图实现自定义布局。 Apple Documentation.

中有更多详细信息