折叠 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
我有一个 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