我有一个嵌入在NSScrollView中的基于视图的NSTableView。它具有x个像素高的自定义单元格。 NSScrollView与它是子视图的面板大小相同。我想调整整个NSTableView的大小,具体取决于表中的行数。
除了调整大小外,一切正常。在IB中手动调整滚动视图的大小似乎具有所需的效果,但NSSrollView似乎没有用于调整其视图大小的类方法(如NSView具有setFrame)。我应该调整scollview,tableview,还是其他什么? NSScrollView是否有我缺少的setFrame方法或类似方法?
感谢。
答案 0 :(得分:4)
在尝试以编程方式执行此操作之前,请确保在nib文件中正确设置了大纲视图的自动调整掩码。听起来你只是希望大纲视图(及其滚动视图)始终保持与其内部窗口相同的大小。
默认情况下,放入窗口的NSScrollView
/ NSOutlineView
组合的自动调整大小掩码如下所示:
换句话说,它设置为始终保持与现在相同的大小,无论您调整窗口大小有多大。
您要做的是将自动调整遮罩更改为如下图所示:
为此,您可以在白色自动调整框中单击任何有红色虚线的位置,将其切换为红色实线。一旦它以这种方式配置,滚动视图(和表视图)将始终(自动)调整大小,使其与其所在的窗口大小相同。
使用Lion的新“自动布局”功能可能还有一种方法可以实现这一点,但我必须将其留给有更多使用经验的人。
答案 1 :(得分:1)
如果您确实需要这样做(例如当您希望所有行都适合滚动视图以减少滚动的需要)并且滚动视图只是窗口/视图的一部分,您可以这样做:
[[myTableView enclosingScrollView] setFrame:newFrameRect];
答案 2 :(得分:0)
scrollview.frame = CGRrectMake(x, y, w, h);