如何在没有 space 问题的情况下创建各种大小的 collectionView 单元格

How to create various size collectionView cells without space problem

大小如下所示的集合视图单元格,它应该能够在任何 JSON 响应计数中适应整个单元格的相同设计。

我是用按钮形状做的,但它只包含 4 个静态项目。

但我需要为以下 UI 调整相同样式的集合视图单元格。

extension CategoryVC: UICollectionViewDelegate, UICollectionViewDataSource{
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return self.categories.count
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CatCell", for: indexPath) as! CatCell
    DispatchQueue.main.async {
          cell.configureCell()  

        cell.imageView.layer.cornerRadius = 5
        cell.grImageView.layer.cornerRadius = 5
        cell.imageView.image = self.ItemImageArray[indexPath.row]

        let category = self.categories[indexPath.row]
        cell.itemImageName.text = category.name ?? ""
    }
    return cell
}

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

        return CGSize(width: 173.0, height: 173.0)
    }
}

我尝试了几个使用 sizeForItemAt 委托方法的实验,但没有得到想要的结果。

我浏览了那么多 Whosebug 帖子和网络结果仍然没有找到适合我的问题的代码片段。

请帮助我。提前致谢

您的单元格应覆盖其内容所需的 preferredLayoutAttributesFittingAttributes 和 return 大小。

您需要在这里做一些基本的纵横比计算。布局属性将为您提供宽度。由于您需要根据内容大小设置可变高度,因此计算 content.width / content.height 和 return 宽度为 layout.width 高度为 layout.width 的大小* 内容高度 / content.width.

https://developer.apple.com/documentation/uikit/uicollectionreusableview/1620132-preferredlayoutattributesfitting?language=objc

感谢大家的支持,实际上我是根据本教程的参考做到这一点的 This link 现在我的 collectionView 看起来像这样