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

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

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

【问题讨论】:

    标签: ios swift uicollectionview uicollectionviewlayout


    【解决方案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约束并固定它的高度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2014-02-22
    相关资源
    最近更新 更多