嘿,我正在尝试使用 Collection View 单元在 View Controller 中显示一组“标签”,但我无法找到一种方法使它们能够根据字符串的长度动态调整大小。
现在,单个单元格的大小是静态的,所以每当一个字符串用超过单元格大小的字符填充单元格时,它就会进入第二行。我想要它,以便单元格可以根据字符串的长度改变长度。所以如果它是标签“#Vegan”,它会自动调整大小,这样标签就不会那么大。同样,如果它是一个较长的字符串,如“#LaptopFriendly”,它将在水平方向上变长以容纳该字符串并且不使用第二行。垂直长度可以保持固定。谢谢!
更新(当我使用 Rob 的代码时遇到错误时的界面构建器设置):
最佳答案
您需要在标签和单元格之间有明确的约束(例如前导、尾随、顶部和底部约束):
然后您可以使用 UICollectionViewFlowLayoutAutomaticSize
作为 collectionViewLayout
的 itemSize
。不要忘记设置 estimatedItemSize
,这样可以自动调整单元格的大小:
override func viewDidLoad() {
super.viewDidLoad()
let layout = collectionView?.collectionViewLayout as! UICollectionViewFlowLayout
layout.itemSize = UICollectionViewFlowLayoutAutomaticSize
layout.estimatedItemSize = CGSize(width: 100, height: 40)
}
产生:
关于ios - 如何创建水平动态的 UICollectionView 单元格? swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45552444/