折叠NSSplitViewItem不会调用splitViewDidResizeSubviews

时间:2016-10-15 12:46:35

标签: swift macos cocoa nssplitview nssplitviewcontroller

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

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

如果我调整窗口大小,则会调用splitViewDidResizeSubviews函数,因此我知道它已正确实现。

我可以期待在崩溃时调用splitViewDidResizeSubviews函数吗?如果是的话,我可能做错了什么?

1 个答案:

答案 0 :(得分:1)

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

(例外情况是当项目向外扩展时。即splitViewItem.collapseBehavior = .preferResizingSplitViewWithFixedSiblings。在我测试时,它会调用splitViewDidResizeSubviews。)

因此,对于这种用法,我更喜欢覆盖NSSplitViewController的另一个方法,例如:

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