2012-07-30 70 views
5

我想实现一个3面板垂直NSSplitView(非常类似于Mail.app)。我不确定从哪里开始。我很确定我需要实现一个NSSplitViewDelegate,但我不确定哪些方法和/或它们的实现。如何实现具有最小和最大尺寸的3窗格NSSplitView?

欲布局是以下内容:

+----------+------------------+------------------------------------+ 
|   |     |         | 
|   |     |         | 
|   |     |         | 
|   |     |         | 
| Pane 1 |  Pane 2  |    Pane 3    | 
|   |     |         | 
|   |     |         | 
|   |     |         | 
|   |     |         | 
|   |     |         | 
+----------+------------------+------------------------------------+ 

我想要实现对每个窗格的以下约束条件:

  • 窗格1:最小140pt。最大:400pt。
  • 窗格2:最小250pt。
  • 窗格3:最小400pt。

任何指针将不胜感激。

+1

视图可以分层的,所以你可能会考虑拆分视图的两个层面:在与右侧和左侧第2个拆分视图“窗格3”前一个(包含“窗格1“和”窗格2“)。我没有尝试过,但它似乎是最简单的方法来完成这项工作。 – 2012-07-31 02:06:35

+0

大教程在这里:http://www.youtube.com/watch?v = k3XLInzZIs8 – siekfried 2013-09-18 10:03:45

回答

0

我猜,你没有解决这个问题。不管怎么说,有两种方法。 第一种是像上面的答案,拖到你想要它SPLITVIEW,并拖动里面的容器(的SPLITVIEW的子视图)之一的第二SPLITVIEW。 视图hierarchie就像

Window 
Window containerview 
     Splitview 
      Containerview_left | containerview_right 
            Splitview 
             Containerview_left | containerview_right 

如果通过代码,然后创建一个SPLITVIEW,其添加为窗口的子视图,视图。 然后通过使用[SPLITVIEW addsubview] 如果您添加三个子视图,你有两个deviders加入他们创造SPLITVIEW子视图。 hierarchie是不同的。

Window Window containerview 
     Splitview 
      Containerview_ind(0)| Containerview_ind(1) | Containerview_ind(2) 

这意味着,如果你想找到一个子视图,你必须知道你是如何创建它的。

HTH

6

其实,HTH启发我尝试在Interface Builder第三种可能性,以及它原来做工精美。特别是,移动一个分隔符不会在其他位置发生任何意外的更改,如果要嵌套拆分视图,很容易发生。

  • 添加NSSplitView到你的窗口,
  • 添加NSView(自定义视图,在IB)的拆分视图的孩子。您最终得到的是包含三个而不是两个子视图的分割视图。

What it looks like in the IB Objects List

,如果你想添加另一个NSSplitView作为一个孩子,但你必须要小心的嵌套分的观点是如何影响彼此相同的作品。上面的图像显示了它在界面构建器中的外观,第二个显示了模拟器中的结果。

The result

7

要强制执行的最小尺寸,检查了我们创建了BESplitViewConstraintEnforcer实用类。

顺便说一句:如果你想避免嵌套分割的观点,而是在Interface Builder中添加额外的窗格中,拖动新视图到拆分视图对象,如下面的截图。

Screenshot