我可以将自定义视图用作NSSplitView的分隔符吗?

时间:2016-11-16 22:35:30

标签: swift cocoa appkit nssplitview

我想使用更高(27pt)的视图作为NSSplitView的分隔符,它是垂直堆叠的(splitView.isVertical = false)。 是否有预期的方法来执行此操作?如果没有,是否存在常见的黑客攻击?

我正在考虑使用细分割器并在自定义视图中侦听鼠标拖动,并使用它们以编程方式更改分隔符的位置。 这是一种有效的方法吗?

1 个答案:

答案 0 :(得分:2)

不需要监听鼠标拖动或任何主动更新视图的方法是使用自动布局:

1。覆盖dividerThickness以返回理想的厚度。

2。如果您的自定义视图不透明,并且您不希望显示默认灰色,请覆盖dividerColor以返回清除。

如果您的最低部署目标为10.11或更高版本:

3a。在拆分视图上将arrangesAllSubviews设置为NO,然后将自定义分隔视图添加为拆分视图的子视图。 (没有将arrangesAllSubviews设置为NO,添加自定义分隔符视图会将其添加为拆分窗格)

否则,如果您的最低部署目标是< 10.11(或者你不能将arrangesAllSubviews设置为NO):

3b。将自定义分隔符添加为拆分视图容器的子视图,但要确保它在subview / z-order中更高

4。添加约束以定位分隔符所在的视图,例如:

let constraints = [dividerView.topAnchor.constraint(equalTo: topPane.bottomAnchor),
                   dividerView.bottomAnchor.constraint(equalTo: topPane.bottomAnchor),
                   dividerView.leadingAnchor.constraint(equalTo: splitView.leadingAnchor),
                   dividerView.trailingAnchor.constraint(equalTo: splitView.trailingAnchor)]
NSLayoutConstraint.activate(constraints)

当用户拖动时,自动布局将负责更新分隔视图的位置。