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 中具有可变项目大小的恒定行距的主要内容,如果未能解决你的问题,请参考以下文章