31

我正在尝试向 UICollectionView 的容器添加填充。我希望它看起来像这样,周围有一个 10pt 的填充。所以在示例屏幕中,底部有一个 10pt 的填充:

layout.minimumInteritemSpacing = layout.minimumLineSpacing = 10;

我正在使用 UICollectionViewFlowLayout 来布局单元格。我还尝试了一个“技巧”,在顶部添加一个 10pt 视图,但由于它们是分开的,因此内容似乎不会滚动视图。在此处输入图像描述

4

4 回答 4

77

请尝试将以下代码放入viewDidLoad()

collectionView!.contentInset = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)

这将为 collectionView 的每一侧添加填充。


PS:我知道这个问题已经存在了一段时间,但它可能会对某人有所帮助;)

于 2015-01-17T19:25:03.847 回答
6

似乎您的sectionInset属性UICollectionViewFlowLayout是您需要修改的。

您可以使用 aUIEdgeInsetsMake创建UIEdgeInsets具有顶部、左侧、右侧和底部边距的 a,并将其设置为sectionInset属性。

这是文档UICollectionViewFlowLayouthttps ://developer.apple.com/library/ios/documentation/uikit/reference/UICollectionViewFlowLayout_class/Reference/Reference.html

于 2013-11-07T21:29:10.707 回答
0

我使用了UICollectionViewDelegateFlowLayout委托的几种方法来完成我正在寻找的东西。我试图向有阴影的单元格添加“填充”。这是为了确保它们具有“浮动”的效果,并且不会触及UICollectionView.

首先,调用该sizeForItemAt indexPath方法并给单元格一个大小:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: collectionView.bounds.width * 0.80, height: collectionView.bounds.height * 0.98)
}

然后,调用该insetForSectionAt section方法,并设置单元格的插图:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    return UIEdgeInsets(top: 20, left: 25, bottom: 20, right: 25)
}
于 2020-07-05T06:41:27.367 回答
0

如果您使用配置,请将布局配置上的 contentInsetsReference 设置为遵循 layoutMargins,然后在 collectionView 本身上设置 layoutMargins。

var config = UICollectionLayoutListConfiguration(appearance: .insetGrouped)
config.headerMode = .supplementary
        
let layout = UICollectionViewCompositionalLayout.list(using: config)
layout.configuration.contentInsetsReference = .layoutMargins
        
collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
        
collectionView.layoutMargins = .init(top: 16, left: 64, bottom: 16, right: 64)
于 2021-10-19T10:06:14.447 回答