基于自定义视图的nstableview调整大小

时间:2015-01-12 16:16:13

标签: objective-c macos cocoa swift nstableview

我有一个NSView类,它在CALayer上绘制它的内容。这些NSView类保存在具有单列的NSTableView中。我需要这样做,以便NSTableView调整它的大小以适应它包含的NSView的内容,它可以具有可变宽度,即NSTableView需要具有与最宽单元格相同的宽度。这反过来将允许用户滚动如果单元格'宽度大于可用面积。

可以把它想象成一个多轨音频编辑器,每个视图都是一个轨道,但轨道可以有不同的长度。

目前,NSView单元格似乎自动调整宽度到表格列的大小,所以我可以看到两种可能性:一种是让单元格NSViews设置它们的宽度,并且不知何故在其他地方有这个推广。另一种是让tableview或nstablecolumn根据最大宽度设置其宽度。我已经尝试设置NSTableColumn宽度和minWidth,但这似乎不起作用(如果尺寸很大,它并不总是调整到正确的大小)。

有任何建议或帮助使这项工作?

1 个答案:

答案 0 :(得分:2)

如果您正在使用CALayer(让我们称之为根层)来绘制视图内容,请尝试创建另一个CALayer,它将是根层的子级(这将是音频轨道)。您可以单独设置子图层的大小,也可以知道哪一个是最大的。 根层表将始终与表视图一样大,正如您所说:" NSView单元格似乎自动将宽度调整为表格列的大小" - 不要尝试更改根层大小,但子层大小。 确定最宽的子项后,只需将表视图框更改为相同的宽度。