我想实现一个3窗格的垂直NSSplitView
(非常类似于Mail.app)。我不确定从哪里开始。我很确定我需要实现NSSplitViewDelegate
,但我不确定哪些方法和/或它们的实现。
我想要的布局如下:
+----------+------------------+------------------------------------+
| | | |
| | | |
| | | |
| | | |
| Pane 1 | Pane 2 | Pane 3 |
| | | |
| | | |
| | | |
| | | |
| | | |
+----------+------------------+------------------------------------+
我想为每个窗格实现以下约束:
任何指针都会非常感激。
答案 0 :(得分:8)
要强制实施最小尺寸,请查看我们创建的BESplitViewConstraintEnforcer实用程序类。
顺便说一句:如果您想避免嵌套拆分视图,而是在Interface Builder中添加一个额外的窗格,请将新视图拖动到拆分视图对象中,如下面的屏幕截图所示。
答案 1 :(得分:6)
实际上,HTH鼓励我在Interface Builder中尝试第三种可能性,结果却很漂亮。特别是,移动一个分隔符不会在其他地方进行任何意外更改,如果您嵌套拆分视图,则很容易发生这种情况。
NSSplitView
NSView
(IB中的自定义视图)。您最终会得到一个包含三个(而不是两个)子视图的拆分视图。
如果您在孩子时添加另一个NSSplitView
,同样有效,尽管您必须小心嵌套分割视图如何相互影响。上图显示了它在界面构建器中的外观,第二个显示模拟器中的结果。
答案 2 :(得分:4)
在Xcode 8.2.1
中非常简单Split View Controller
。View Controller
。Split View Controller
并拖动到其他View Controller
。split items
。就是这样。
答案 3 :(得分:0)
我猜你确实解决了这个问题。 无论如何,有两种方式。 第一个就像上面的答案一样,将splitview拖动到你想要的位置,然后在其中一个容器(splitview的子视图)中拖动第二个splitview。 视图hierarchie就像
Window
Window containerview
Splitview
Containerview_left | containerview_right
Splitview
Containerview_left | containerview_right
如果你是通过代码,那么你创建一个splitview,将它添加为窗口的子视图,视图。 然后使用[splitview addsubview]添加它们来创建splitview子视图 如果你添加三个子视图,你有两个deviders。 hierarchie是不同的。
Window Window containerview
Splitview
Containerview_ind(0)| Containerview_ind(1) | Containerview_ind(2)
这意味着,如果你想找到一个子视图,你必须知道你是如何创建它的。
HTH