调整我的 UICollectionViewCell 大小的问题

Posted

技术标签:

【中文标题】调整我的 UICollectionViewCell 大小的问题【英文标题】:Issues with resizing my UICollectionViewCell 【发布时间】:2021-12-27 00:53:01 【问题描述】:

我目前正在尝试在 CollectionView 中调整单元格的大小。我已经实现了dataSource、CollectionViewDelegate和CollectionViewDelegateFlowLayout。

这是我为后者提供的代码:

   extension ViewController: UICollectionViewDelegateFlowLayout 

  func collectionView(_ collectionView: UICollectionView, layout 
collectionViewLayout: UICollectionViewLayout, sizeForItemAt 
indexPath: IndexPath) -> CGSize
    
     return CGSize(width: 100.0, height: 100.0)
    
 

问题是当我前往我的故事板并选择我的 CollectionView 然后转到属性检查器以将“估计大小”从“自动”切换到“无”时,我会得到运行我的应用程序后的三列 [Image #1]。

我正在寻找的结果是能够有一个具有更大单元格的中间列,就像我在图片 #2 中显示的那样。

以前有人处理过这个问题吗?

【问题讨论】:

如果您只需要一列,您可能应该使用UITableView。您使用集合视图是否有原因? 是的,先生!原因是与表格视图相比,在集合视图中布置单元格时具有更大的灵活性(我没记错)。 正确。但是,当您拥有多个列时,这种灵活性就会发挥作用。在您想要的第二张图片中,您有一个同质列表。相同的单元格,相同的宽度,相同的间距,一列。这尖叫UITableView。你可能把事情复杂化了 我倾向于同意@Jesse 的观点。 UITableView 增加了不必要的限制。 IMO 那只是一个 UICollectionView。你应该看看developer.apple.com/documentation/uikit/uicollectionviewlayout而不是LayoutDelegate,并手动构建你自己的奇妙布局。 回复第二条评论:有可能,用“容器”tableViewCell。您创建自定义单元格,设置透明背景并使用约束在中间添加内容视图。但是,如果您想稍后移至某个集合,请记住您将不得不重写大量代码。 (虽然它会产生一些怪癖,我能想到的一个是,如果你点击边缘,它会被识别为你在外面点击的单元格。可以处理但不是很干净) 【参考方案1】:

为了将集合视图单元格显示为列表,您可以将单元格宽度更改为集合视图的宽度。提供恒定宽度不适用于不同的设备尺寸。


  func collectionView(_ collectionView: UICollectionView, layout 
collectionViewLayout: UICollectionViewLayout, sizeForItemAt 
indexPath: IndexPath) -> CGSize
    
       let width = collectionView.frame.width
     return CGSize(width: width, height: 100.0)
    

并为内部矩形视图提供所需的约束值以实现所需的外观。清除collectionView单元格背景。

【讨论】:

以上是关于调整我的 UICollectionViewCell 大小的问题的主要内容,如果未能解决你的问题,请参考以下文章

调整包含 UITextView 的 UICollectionViewCell 以适合 contentSize

在第一个实例上,内容未在 UICollectionViewCell 内调整大小

使用 AutoLayout 和 iOS 8 为不同设备调整 UICollectionViewCell 的大小

调整 UICollectionViewCell 以适应内容

调整单个 UICollectionViewCell 的大小,有可能吗?

UICollectionViewCell 在代码中调整布局后更新约束