我有一个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
但我也没有太多运气,因为我不知道如何最好地弄清楚尺寸应该是什么(在这种情况下的高度)
有关此问题的任何建议吗?
谢谢!
答案 0 :(得分:1)
您可以使用所需宽度和足够高度的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)
}