我试图在单元格之间留出空间,但在 UICollectionViewCompositionalLayout 实例的边缘周围没有空间。但是,此类似乎没有提供实现该目的的内置方法。 Apple 是否出于特定原因省略了此功能?我想到的一个快速修复方法是将 UICollectionView 本身的 contentInset 调整为负值以平衡额外的空间。但是,我不确定这个解决方案的优雅性及其在布局失效期间的处理,例如,当屏幕旋转时。
@IBSegueAction private func makeBasicGridCompositionalLayoutViewController(_ coder: NSCoder) -> PhotosCollectionViewController? {
let compositionalLayout: UICollectionViewCompositionalLayout = {
let fraction: CGFloat = 1 / 3
let inset: CGFloat = 2.5
// Item
let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(fraction), heightDimension: .fractionalHeight(1))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
item.contentInsets = NSDirectionalEdgeInsets(top: inset, leading: inset, bottom: inset, trailing: inset)
// Group
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1), heightDimension: .fractionalWidth(fraction))
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitems: [item])
// Section
let section = NSCollectionLayoutSection(group: group)
section.contentInsets = NSDirectionalEdgeInsets(top: inset, leading: inset, bottom: inset, trailing: inset)
return UICollectionViewCompositionalLayout(section: section)
}()
let dataSource = PhotosDataSource(photos: photos, sectionStyle: .single)
return PhotosCollectionViewController(collectionViewLayout: compositionalLayout, dataSource: dataSource, coder: coder)
}
有人遇到过类似的问题吗?