将每行UICollectionView插入设置为具有动态宽度的中心项目

时间:2018-07-19 17:08:28

标签: ios swift uicollectionview

我正在尝试使用动态尺寸的商品将商品在“收藏夹”视图中居中。我想将这些项目居中,在某些情况下可以是每行一个,在某些情况下可以是两个。我找到了一种基于设置节的插入来使项目居中的解决方案,但这要求所有项目的大小均相同:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {

    let totalCellWidth = CellWidth * CellCount
    let totalSpacingWidth = CellSpacing * (CellCount - 1)

    let leftInset = (collectionViewWidth - CGFloat(totalCellWidth + totalSpacingWidth)) / 2
    let rightInset = leftInset

    return UIEdgeInsetsMake(0, leftInset, 0, rightInset)
}

这是我的收藏夹视图中带有“合理”项目的图像,它们之间具有动态间距:

enter image description here

我的目标是更改每行的插图,使项目居中,并且它们之间的空间始终相同。

关于我如何能够做到这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

如评论中所述,您必须为collectionView使用自定义布局。首先,您可以参考以下链接。

P.S:由于不建议在stackoverflow上仅共享链接,因此我将尽快更新答案并概述使用自定义布局所需的基本步骤。