为什么我的拆分视图表现得像这样,我该如何解决?

时间:2014-12-14 12:35:26

标签: macos swift interface-builder nssplitview

我创建了一个分割视图控制器,它显示两个视图,如下所示: enter image description here

当我编译它时,它给了我这个结果: enter image description here

不幸的是,第一个视图不可见,我必须从窗口的左侧拖动才能看到两个视图:
enter image description here

首先,为什么拆分视图的行为如此?为什么它从一开始就没有合适的尺寸?
如果我将此行添加到 SplitViewController 的viewDidLoad()函数中:

splitView.adjustSubviews()

然后出现两个视图,大小相同,但我不明白 adjustSubviews()函数究竟做了什么,我无法控制其中任何一个的位置。

如何以编程方式修复它?如何调整每个视图的大小?有没有办法在界面构建器中调整它?

谢谢。

编辑:这个问题现在有50分的赏金

3 个答案:

答案 0 :(得分:7)

由于NSSplitViewController是基于自动布局的,因此如果您希望视图具有固定或动态行为,则可以使用自动布局。

对于固定宽度,您可以执行的操作是在2个视图中添加自定义视图,并在所有边缘和固定宽度上使用0约束。例如:

enter image description here

然后窗口将扩展如下:

enter image description here

答案 1 :(得分:1)

您应该能够使用(在分割视图中假设2个视图)在拆分视图中设置分隔符的位置:

self.splitView.setPosition(200.0, ofDividerAtIndex: 0)

这会将第一个分隔符设置在位置200.0

答案 2 :(得分:0)

我们需要直接设置NSSplitView个子视图的大小。 通过splitViewItems设置一些似乎没有效果。

// NSSplitViewController
- (void)viewDidLoad {
    [super viewDidLoad];

    NSView *view1 = self.splitView.subviews[0];
    NSRect rect = view1.frame;
    rect.size.width = 150;
    view1.frame = rect;

    NSView *view2 = self.splitView.subviews[1];
    rect = view2.frame;
    rect.size.width = 300;
    view2.frame = rect;
}