UICollectionView 中具有可变项目大小的恒定行距

Posted

技术标签:

【中文标题】UICollectionView 中具有可变项目大小的恒定行距【英文标题】:Constant line spacing with variable item size in UICollectionView 【发布时间】:2017-06-29 17:31:38 【问题描述】:

我有一个带有水平滚动和可变大小项目的 UICollectionView。

“水平”行中的项目之间是否可以保持恒定间距?

谢谢。

【问题讨论】:

在我看来,您的单元格大小都相同,只是标签的大小不同。您应该发布您的单元格创建代码 - 您要为 sizeForItem 发送什么? 【参考方案1】:

您需要提供单元格的可变宽度。从 UICollectionViewDelegateFlowLayout

实现此方法
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
    let size = (items[indexPath.item] as NSString).size(attributes: nil)
    return CGSize(width: size.width + yourTextPadding, height: yourCellHeight)

您还可以提供标签的字体属性以进行精确计算或仅使用一些常量(如文本宽度的 2 倍)。

【讨论】:

以上是关于UICollectionView 中具有可变项目大小的恒定行距的主要内容,如果未能解决你的问题,请参考以下文章

在垂直堆栈视图中具有自动项目大小的水平分页 UICollectionView?

具有流式布局的 UICollectionView 不会将多个项目放在一行上

具有单元格间距的 UICollectionView 存在滚动问题

如何将 UICollectionView 项目的大小调整为具有集合视图高度的正方形大小?

如何为 UICollectionView 中的单元格设置可变单元格间距

UICollectionView - 如何在同一部分显示不同高度的项目?