Swift:UICollectionView - 固定单元格之间的空间

Posted

技术标签:

【中文标题】Swift:UICollectionView - 固定单元格之间的空间【英文标题】:Swift: UICollectionView - Fixed space between cells 【发布时间】:2019-08-22 10:02:16 【问题描述】:

我正在使用UICollectionView 获取不同大小的UIButton 列表。在 Storyboard 中,我为集合视图设置了前导和尾随约束(每个 20px 与安全区域相关)。这就是我得到的:

如您所见,单元格之间的空间(我在情节提要中设置)增加了以“对齐”单元格。这不是我想要的,我想在单元格之间有固定的空间,最终在行尾有更多的空间。有可能吗?

【问题讨论】:

【参考方案1】:
import UIKit

class CustomImageFlowLayout: UICollectionViewFlowLayout 

override init() 
    super.init()
    setupLayout()


required init?(coder aDecoder: NSCoder) 
    super.init(coder: aDecoder)
    setupLayout()


func setupLayout() 
    minimumInteritemSpacing = 1
    minimumLineSpacing = 1
    scrollDirection = .vertical


override var itemSize: CGSize 
    set 

    
    get 
        let numberOfColumns: CGFloat = 3 //no of columns

        let itemWidth = (self.collectionView!.frame.width - (numberOfColumns - 1)) / numberOfColumns
        return CGSize(width: itemWidth, height: itemWidth + 5)
    




On your collection view controller 

@IBOutlet weak var colectionvw: UICollectionView!

var collectionViewLayout: CustomImageFlowLayout!

override func viewDidLoad()

    super.viewDidLoad()
    collectionViewLayout = CustomImageFlowLayout()
    colectionvw.collectionViewLayout = collectionViewLayout

【讨论】:

我不想有固定的列数,这取决于按钮的宽度(当然还有屏幕)【参考方案2】:

您可以通过将 CollectionView 滚动方向设置为水平来解决此问题。这将自动设置大小并根据需要进行排列。

【讨论】:

单行水平滚动 不,你可以为你的collectionview设置多行的高度。 不知道怎么设置高度?我目前正在使用 collectionView.contentSize.height 更新它 根据你的布局添加collectionview约束并固定它的高度。

以上是关于Swift:UICollectionView - 固定单元格之间的空间的主要内容,如果未能解决你的问题,请参考以下文章

Swift:滚动时 UICollectionView 标题消失

swift UICollectionView + RxReachedBottom.swift

如何将 UIPageControl 连接到 UICollectionView (Swift)

Swift 4 UICollectionView 检测滚动结束

如何使用 swift 重置 UICollectionView 滚动位置?

Swift 3 - 带有填充的 UICollectionView 中心单元