我想使用更高(27pt)的视图作为NSSplitView
的分隔符,它是垂直堆叠的(splitView.isVertical = false
)。 是否有预期的方法来执行此操作?如果没有,是否存在常见的黑客攻击?
我正在考虑使用细分割器并在自定义视图中侦听鼠标拖动,并使用它们以编程方式更改分隔符的位置。 这是一种有效的方法吗?
答案 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)
当用户拖动时,自动布局将负责更新分隔视图的位置。