我正在尝试向 UICollectionView 的容器添加填充。我希望它看起来像这样,周围有一个 10pt 的填充。所以在示例屏幕中,底部有一个 10pt 的填充:
layout.minimumInteritemSpacing = layout.minimumLineSpacing = 10;
我正在使用 UICollectionViewFlowLayout 来布局单元格。我还尝试了一个“技巧”,在顶部添加一个 10pt 视图,但由于它们是分开的,因此内容似乎不会滚动视图。
我正在尝试向 UICollectionView 的容器添加填充。我希望它看起来像这样,周围有一个 10pt 的填充。所以在示例屏幕中,底部有一个 10pt 的填充:
layout.minimumInteritemSpacing = layout.minimumLineSpacing = 10;
我正在使用 UICollectionViewFlowLayout 来布局单元格。我还尝试了一个“技巧”,在顶部添加一个 10pt 视图,但由于它们是分开的,因此内容似乎不会滚动视图。
请尝试将以下代码放入viewDidLoad()
:
collectionView!.contentInset = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
这将为 collectionView 的每一侧添加填充。
PS:我知道这个问题已经存在了一段时间,但它可能会对某人有所帮助;)
似乎您的sectionInset
属性UICollectionViewFlowLayout
是您需要修改的。
您可以使用 aUIEdgeInsetsMake
创建UIEdgeInsets
具有顶部、左侧、右侧和底部边距的 a,并将其设置为sectionInset
属性。
这是文档UICollectionViewFlowLayout
:https ://developer.apple.com/library/ios/documentation/uikit/reference/UICollectionViewFlowLayout_class/Reference/Reference.html
我使用了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)
}
如果您使用配置,请将布局配置上的 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)