NSSplitView部分崩溃

时间:2015-07-05 11:57:18

标签: swift cocoa autolayout nssplitview

我有一个带有两个水平子视图的NSSplitView。左边是NSOutlineView,右边是NSTableView。左视图对宽度有两个约束:1)> = 150和2)< = 200.所以我有最小宽度和最大宽度。

func splitView(splitView: NSSplitView, canCollapseSubview subview: NSView) -> Bool {我返回true左侧子视图。这有效,但完全隐藏了左视图(应该如此)。

我的目标是,而不是正常的方式,左视图只会崩溃,比方说50px。我有办法达到这个目标吗?我想过编码......在func splitView(splitView: NSSplitView, resizeSubviewsWithOldSize oldSize: NSSize)中,但这不是使用autolayout时的正确方法(我尝试过,但设置子视图的帧会导致在每次更改Splitview分隔符时重新加载NSTableView(导致tableview丢失)每一个选择))。

1 个答案:

答案 0 :(得分:0)

首先,无论你想把这种行为称为什么,它都不是Cocoa所谓的崩溃子视图。所以,不要再考虑崩溃了。

其次,您不能指定最小宽度约束,然后期望系统忽略它。如果您希望视图有时只有50个点宽,则无法设置约> 150点的约束。

您可以尝试实施委托方法splitView(_:constrainSplitPosition:ofSubviewAt:),使分隔线位置“捕捉”到150点限制和50点限制。也就是说,它可以允许任何位置> = 150点。对于100到150点之间的位置,它会将其调整为150点。对于低于100点的位置,它会将其调整为50点。