ios - 如何创建水平动态的 UICollectionView 单元格? swift

标签 ios swift uicollectionview uicollectionviewcell

嘿,我正在尝试使用 Collection View 单元在 View Controller 中显示一组“标签”,但我无法找到一种方法使它们能够根据字符串的长度动态调整大小。

现在,单个单元格的大小是静态的,所以每当一个字符串用超过单元格大小的字符填充单元格时,它就会进入第二行。我想要它,以便单元格可以根据字符串的长度改变长度。所以如果它是标签“#Vegan”,它会自动调整大小,这样标签就不会那么大。同样,如果它是一个较长的字符串,如“#LaptopFriendly”,它将在水平方向上变长以容纳该字符串并且不使用第二行。垂直长度可以保持固定。谢谢!

enter image description here

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

enter image description here

模拟器截图: enter image description here

最佳答案

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

enter image description here

然后您可以使用 UICollectionViewFlowLayoutAutomaticSize 作为 collectionViewLayoutitemSize。不要忘记设置 estimatedItemSize,这样可以自动调整单元格的大小:

override func viewDidLoad() {
    super.viewDidLoad()

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

产生:

enter image description here

关于ios - 如何创建水平动态的 UICollectionView 单元格? swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45552444/

相关文章:

ios - 添加 SKPhysicsBody 导致 SKSpriteNode 摇晃

ios - 如何让 SnapKit 约束左右边缘?

iphone - 将滚动条添加到 iPad 和 iPhone 的 div 的最佳方法是什么?

ios - 无法从选项卡栏 Controller 访问导航栏

iOS - 没有 VOIP/FCM 的 PushKit 和 CallKit

ios - 是否可以直接跳转到 UIActivityViewController 中的共享扩展之一?

ios - 在没有重新加载方法的情况下调整 UICollectionView 的单元格大小

ios - TableView 中的 UICollectionView 不填充单元格?

swift - 如何更改 UICollectionView 中特定单元格的颜色

php - sabredav carddav 无法在 ios 上运行,在 android 上无法运行