我想为一个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:我知道这个问题已经存在一段时间了,但它可能会对某些人有帮助;)
UICollectionViewFlowLayout
的 sectionInset
属性。你可以使用 UIEdgeInsetsMake
来创建一个具有上、左、右和下边距的 UIEdgeInsets
,并将其设置为 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)
}
UICollectionLayoutListConfiguration
,似乎要在某些外观中获得较小的边距,则必须在部分级别上执行此操作,如下所示:private func createLayout() -> UICollectionViewLayout {
let layout = UICollectionViewCompositionalLayout() { (sectionIndex, layoutEnvironment) -> NSCollectionLayoutSection? in
// Create a list configuration as usual
var config = UICollectionLayoutListConfiguration(appearance: .sidebarPlain)
config.headerMode = .supplementary
// Change the section's contentInsets to adjust the side margins
let section = NSCollectionLayoutSection.list(using: config, layoutEnvironment: layoutEnvironment)
section.contentInsets.leading = 10
section.contentInsets.trailing = 10
return section
}
return layout
}
如果您正在使用配置,请将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)