gpt4 book ai didi

macos - 如何让 NSCollectionView 项目具有基于文本字段的动态高度

转载 作者:行者123 更新时间:2023-12-03 17:33:23 25 4
gpt4 key购买 nike

我有一个 NSCollectionView,它显示列表中的项目。

enter image description here

我的布局是由

定义的
private func configureCollectionView() {
let flowLayout = NSCollectionViewFlowLayout()

flowLayout.itemSize.width = self.view.frame.width
//flowLayout.itemSize.height = 50
flowLayout.minimumLineSpacing = 8
myCollectionView.collectionViewLayout = flowLayout
view.wantsLayer = true
}

当将一段长文本作为项目输入时,我试图获取该“单元格”的项目高度,以随着文本内容而增长/扩展。我已经使用 AutoLayout 设置了约束,并且我相当确定它的设置正确,但我的项目高度保持固定为 50(我不知道在哪里设置)。

我正在尝试利用

func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize 

但是我对此也没有太多运气,因为我不知道如何最好地确定尺寸应该是多少(在本例中为高度)

对于这个问题有什么建议吗?

谢谢!

最佳答案

您可以使用sizeThatFits具有您想要的宽度和足够大的高度

func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize {

let string = strings[indexPath.item]
let size = NSTextField(labelWithString: string).sizeThatFits(NSSize(width: 400, height: 800))

return NSSize(width: 400, height: size.height > 80 ? size.height : 80)
}

关于macos - 如何让 NSCollectionView 项目具有基于文本字段的动态高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46095047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com