在没有边缘填充的情况下管理 UICollectionViewCompositionalLayout 中的单元格间距

问题描述 投票:0回答:0

我试图在单元格之间留出空间,但在 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)
}

有人遇到过类似的问题吗?

swift uicollectionview uikit uicollectionviewcompositionallayout
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.