9

我有一个嵌入在 NSScrollView 中的基于视图的 NSTableView。它具有 x 像素高的自定义单元格。NSScrollView 与作为子视图的面板大小相同。我想根据表中有多少行来调整整个 NSTableView 的大小。

除了调整大小外,一切正常。在 IB 中手动调整滚动视图的大小似乎有预期的效果,但 NSSrollView 似乎没有调整其视图大小的类方法(就像 NSView 有 setFrame)。我应该调整 scollview、tableview 的大小,还是两者兼而有之?NSScrollView 是否有我缺少的 setFrame 方法或类似方法?

谢谢。

4

3 回答 3

4

在您尝试以编程方式执行此操作之前,请确保您已在 nib 文件中正确设置了大纲视图的自动调整大小掩码。听起来您只是希望大纲视图(及其滚动视图)始终保持与其内部窗口相同的大小。

默认情况下,您放置在窗口中的NSScrollView/NSOutlineView组合的自动调整大小掩码如下所示:

在此处输入图像描述

换句话说,它设置为始终保持与现在相同的大小,无论您将窗口大小调整为多大。

您要做的是将自动调整大小的蒙版更改为如下图所示:

在此处输入图像描述

为此,您在白色的自动调整大小框中单击任何有红色虚线的地方,将其切换为红色实线。一旦以这种方式配置,滚动视图(和表格视图)将始终(自动)调整为与其所在窗口相同的大小。

也可能有一种方法可以使用 Lion 的新“自动布局”功能来实现这一点,但我必须把它留给有更多经验的人。

于 2012-05-01T08:26:45.617 回答
1

如果您确实需要这样做(例如,当您希望所有行都适合滚动视图以减轻滚动需要时)并且滚动视图只是您可以执行的窗口/视图的一部分:

[[myTableView enclosingScrollView] setFrame:newFrameRect];
于 2013-01-06T22:49:09.970 回答
0
scrollview.frame = CGRrectMake(x, y, w, h);
于 2012-05-01T06:56:59.977 回答