【问题标题】:NSSplitView partly collapseNSSplitView 部分崩溃
【发布时间】:2015-07-05 11:57:18
【问题描述】:

我有一个带有两个水平子视图的 NSSplitView。左边是一个NSOutlineView,右边是一个NSTableView。左视图有两个宽度约束:1) >= 150 和 2)

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

我的目标是,而不是正常的方式,左视图只折叠到,比如说 50px。有没有办法我可以做到这一点?我想到了编码。在func splitView(splitView: NSSplitView, resizeSubviewsWithOldSize oldSize: NSSize) 中,但是在使用自动布局时这不是正确的方法(我尝试过,但是设置子视图的框架会导致在 Splitview 分隔符的每次更改时重新加载 NSTableView(这会导致 tableview 丢失每个选择))。

【问题讨论】:

    标签: swift cocoa autolayout nssplitview


    【解决方案1】:

    首先,无论您想如何称呼这种行为,它都不是 Cocoa 所说的折叠子视图。所以,不要再考虑崩溃了。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      相关资源
      最近更新 更多