一个简单的 Hack 用来解决 NSCollectionView 在 NSStackView 里不显示内容的方法。
解决的方法也很简单,就是重写 intrinsicContentSize 返回 collectionViewLayout.collectionViewContentSize 这个真正的大小。
下面是示例代码:
class RBCollectionView: NSCollectionView {
override var intrinsicContentSize: NSSize {
// 这里我只关心高度,宽度我不关心,如果你关心宽度得注意一下。
return CGSize(
width: NSView.noIntrinsicMetric,
height: collectionViewLayout?.collectionViewContentSize.height ?? NSView.noIntrinsicMetric)
}
override func layout() {
super.layout()
// 因为 collectionViewContentSize 会变化,所以需要重新计算
invalidateIntrinsicContentSize()
}
}
算是给网络留下点东西。