根据表中的行数调整NSTableView或NSScrollView的大小

时间:2012-05-01 06:54:25

标签: objective-c cocoa nstableview nsscrollview

我有一个嵌入在NSScrollView中的基于视图的NSTableView。它具有x个像素高的自定义单元格。 NSScrollView与它是子视图的面板大小相同。我想调整整个NSTableView的大小,具体取决于表中的行数。

除了调整大小外,一切正常。在IB中手动调整滚动视图的大小似乎具有所需的效果,但NSSrollView似乎没有用于调整其视图大小的类方法(如NSView具有setFrame)。我应该调整scollview,tableview,还是其他什么? NSScrollView是否有我缺少的setFrame方法或类似方法?

感谢。

3 个答案:

答案 0 :(得分:4)

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

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

enter image description here

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

您要做的是将自动调整遮罩更改为如下图所示:

enter image description here

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

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

答案 1 :(得分:1)

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

[[myTableView enclosingScrollView] setFrame:newFrameRect];

答案 2 :(得分:0)

scrollview.frame = CGRrectMake(x, y, w, h);