如何在没有 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.
感谢大家的支持,实际上我是根据本教程的参考做到这一点的 This link 现在我的 collectionView 看起来像这样
大小如下所示的集合视图单元格,它应该能够在任何 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.
感谢大家的支持,实际上我是根据本教程的参考做到这一点的 This link 现在我的 collectionView 看起来像这样