Swift - 在CollectionView中设置不同宽度的单元格之间的固定间距

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift - 在CollectionView中设置不同宽度的单元格之间的固定间距相关的知识,希望对你有一定的参考价值。

我有一个集合视图,将显示用户技能。

 lazy var collectionView: UICollectionView = {
        let layout = UICollectionViewFlowLayout()
        let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
        collectionView.backgroundColor = .white
        collectionView.translatesAutoresizingMaskIntoConstraints = false
        collectionView.keyboardDismissMode = .interactive
        collectionView.delegate = self
        collectionView.isScrollEnabled = false
        collectionView.dataSource = self
        collectionView.register(cvcSkills.self, forCellWithReuseIdentifier: self.skillsId)
        return collectionView
    }()

每个技能都在一个单元格中,其宽度根据单词的长度设置(如图所示)

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    var width:CGFloat = 0

        // Width size calculated depending on the size of the text
        let skill = skills[indexPath.row]
        if let name = skill.name {

            let size: CGSize = name.size(withAttributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 14.0)])
            width = size.width + 30
        }
    }
    return CGSize(width: width, height: 40)
}

current view

正如你所看到的,这些单元格之间的间距由于某种原因是任意的,我似乎无法使它们彼此具有相等的距离。

我试过设置这样的插图(这是我当前的代码,显示在图像中):

    let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
    layout.sectionInset = UIEdgeInsetsMake(0, 5, 0, 5)
    layout.invalidateLayout()
    collectionView.collectionViewLayout = layout

我也尝试将qazxsw poi和qazxsw poi设置为不同的值,但我仍然在每个单元格之间保持不同的大小空间。

关于如何让这些细胞相互间隔10个的任何想法。

答案

正如Fogmeister建议的那样,您需要创建自己的自定义流布局以支持此需求。

但是,如果需要,我有一个支持上述要求的流布局,即尝试minimumInteritemSpacing类型(还有其他类型)。

minimumLineSpacing

虽然我分享了它,但我建议您仔细阅读代码并亲自尝试。使用自定义流布局很有趣。

以上是关于Swift - 在CollectionView中设置不同宽度的单元格之间的固定间距的主要内容,如果未能解决你的问题,请参考以下文章

带有 collectionView 的 Hero ViewController 动画 - swift

如何在 CollectionView iOS Swift 4 中显示不显示单元格的标题?

如何在 collectionView 单元格中设置 NSLayoutConstraint 常量?

从函数发送值到另一个VC,swift3

如何在水平collectionview中设置不同的单元格高度和宽度

如何在 CollectionView.Footer 中设置 XAML 按钮大小?