折叠 NSSplitViewItem 不调用 splitViewDidResizeSubviews

Collapsing NSSplitViewItem does not call splitViewDidResizeSubviews

我有一个 class 继承自 NSSplitViewController 并覆盖 splitViewDidResizeSubviews 函数。

当我在 NSSplitViewController 内的 NSSplitViewItem 上调用 collapse 时,我看到 NSSplitViewItem 明显调整大小 splitViewDidResizeSubviews 函数未被调用。

如果我调整 window 的大小,则会调用 splitViewDidResizeSubviews 函数,所以我知道它已正确实现。

我可以期望 splitViewDidResizeSubviews 函数在崩溃时被调用吗?如果是这样,我可能做错了什么?

因为折叠 splitViewItem 不会调整其实际框架大小,而只会切换项目的可见性。如果您只是切换 isCollapsed 状态,splitViewItem 会保留帧大小。

(一个例外是项目向外扩展时。即 splitViewItem.collapseBehavior = .preferResizingSplitViewWithFixedSiblings。正如我测试的那样,它调用 splitViewDidResizeSubviews。)

所以对于这种用法,我更喜欢重写 NSSplitViewController 的另一个方法,例如:

func splitView(_ splitView: NSSplitView, shouldCollapseSubview subview: NSView, forDoubleClickOnDividerAt dividerIndex: Int