调整我的 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 的大小