我有一个NSCollectionView,它以列表的形式显示项目。

我的布局由
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设置了我的contsraints,并且我相当确定它的设置是正确的,但是我的物品高度仍然固定在50 (我不知道它设置在哪里)。
我在试着利用
func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize 但我也不太幸运,因为我不知道如何最好地计算出尺寸应该是多少(在这种情况下是高度)。
对这个问题有什么建议吗?
谢谢!
发布于 2017-11-08 04:20:39
您可以使用具有所需宽度和足够高的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)
}https://stackoverflow.com/questions/46095047
复制相似问题