如何创建水平动态UICollectionView单元格?迅速

Sam*_*Sam 2 ios uicollectionview uicollectionviewcell swift

嘿我正在尝试使用集合视图单元在视图控制器中显示一组"标签",但是我很难找到一种方法使它们能够根据字符串的长度动态调整大小.

现在,单个单元格是静态大小的,因此只要字符串填充单元格超过单元格大小的字符串,它就会进入第二行.我想要它,以便单元格可以根据字符串的长度更改长度.因此,如果它是标记"#Vegan",它将自动调整大小以使标记不那么大.同样,如果它是一个更长的字符串,如"#LaptopFriendly",它将水平变长以容纳字符串而不使用第二行.垂直长度可以保持固定.谢谢!

在此输入图像描述

UPDATE(使用Rob的代码遇到错误时的界面构建器设置):

在此输入图像描述

模拟器截图: 在此输入图像描述

Rob*_*Rob 12

您需要在标签和单元格之间建立明确的约束(例如,前导,尾随,顶部和底部约束):

在此输入图像描述

然后你可以使用UICollectionViewFlowLayoutAutomaticSizeitemSize你的collectionViewLayout.不要忘记设置estimatedItemSize,它可以自动调整单元格大小:

override func viewDidLoad() {
    super.viewDidLoad()

    let layout = collectionView?.collectionViewLayout as! UICollectionViewFlowLayout
    layout.itemSize = UICollectionViewFlowLayoutAutomaticSize
    layout.estimatedItemSize = CGSize(width: 100, height: 40)
}
Run Code Online (Sandbox Code Playgroud)

产量:

在此输入图像描述