我有一个带有两个水平子视图的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丢失)每一个选择))。
答案 0 :(得分:0)
首先,无论你想把这种行为称为什么,它都不是Cocoa所谓的崩溃子视图。所以,不要再考虑崩溃了。
其次,您不能指定最小宽度约束,然后期望系统忽略它。如果您希望视图有时只有50个点宽,则无法设置约> 150点的约束。
您可以尝试实施委托方法splitView(_:constrainSplitPosition:ofSubviewAt:)
,使分隔线位置“捕捉”到150点限制和50点限制。也就是说,它可以允许任何位置> = 150点。对于100到150点之间的位置,它会将其调整为150点。对于低于100点的位置,它会将其调整为50点。