5

我创建了一个显示两个视图的拆分视图控制器,如下所示: 在此处输入图像描述

当我编译它时,它给了我这个结果: 在此处输入图像描述

不幸的是,第一个视图不可见,我必须从窗口左侧拖动才能看到两个视图:
在此处输入图像描述

首先,为什么拆分视图会这样?为什么它从一开始就不是正确的尺寸?
如果我将此行添加到我的SplitViewController的 viewDidLoad() 函数中:

splitView.adjustSubviews()

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

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

谢谢你。

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

4

3 回答 3

7

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

对于固定宽度,您可以在 2 个视图中添加一个自定义视图,其中所有边缘的约束为 0,并且宽度固定。例如:

在此处输入图像描述

然后窗口将展开如下:

在此处输入图像描述

于 2015-01-27T06:37:18.717 回答
1

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

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

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

于 2015-01-30T00:20:04.350 回答
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;
}
于 2015-01-29T12:11:46.720 回答