达到约束时推送NSSplitView的子视图

时间:2014-07-03 07:07:51

标签: macos cocoa autolayout nssplitview

在OS X中,我有一个NSSplitView,其中有3个垂直堆叠的子视图:A,B,C。

视图B具有最小高度约束。如果我向上推动B-C分频器,它会在达到约束时停止,就像它应该的那样。

但是,我想让分频器A-B向上推,当分钟时。达到B的高度约束(并且A中没有其他约束)。

相反,如果有最大值。 B和I中的高度约束向下拉动B-C分频器,我希望跟随分频器A-B(其他约束条件允许)。

有没有办法用AutoLayout实现这个目标?如果没有,你能否建议一个方法/指向相关资源?

感谢。

1 个答案:

答案 0 :(得分:1)

如果查看在拖动过程中添加到SplitView的约束,您会注意到NSSplitView添加了必需的约束,这些约束将非分割器相邻视图保持在当前位置。

"<NSLayoutConstraint:0x6100000827b0 H:|-(512.5)-[View3]   (Names: View3:0x600000120500, '|':MySplitView:0x6000001203c0 )>"

在拖动结束时,这些将被删除。

如果未添加或仅以较低优先级添加这些约束,您将获得所描述的行为。不幸的是,由于它们是必需的,因此甚至没有可推荐的解决方法(例如手动添加更高优先级的约束)。


您可以提交增强请求,让NSSplitView提供对这些约束的更多控制。