2015-01-12 45 views
4

我有一个NSView类,它在CALayer上绘制它的内容。这些NSView类被保存在具有单列的NSTableView中。我需要这样做,NSTableView调整它的大小以适应它包含的NSView的内容,它可以具有可变的宽度,即NSTableView需要与最宽的单元具有相同的宽度。如果单元格的宽度大于可用区域,这又会允许用户滚动。自定义基于视图的nstableview调整大小

想象它像一个多轨音频编辑器,其中每个视图是一个轨道,但轨道可以有不同的长度。现在,NSView单元格自动调整宽度以适应表格列的大小,所以我可以看到两种可能性:一种是使单元格NSViews设置它们的宽度,并以某种方式让这个布局实现无处不在其他。另一个是使tableview或nstablecolumn根据最大宽度设置其宽度。我曾尝试设置NSTableColumn宽度和最小宽度,但这似乎不起作用(它不总是调整到正确的大小,如果大小很大)。

任何建议或帮助,使其工作?

回答

2

如果您使用CALayer(让我们称之为根层)来绘制视图内容,请尝试创建另一个CALayer,它将是根层的一个子层(这将是音轨)。您可以独立设置子图层的大小,也可以知道哪一个最大。 根层将永远和表格视图一样大,正如你所说的:“NSView单元格自动调整宽度以适应表格列的大小” - 不要尝试改变根层的大小,而是改变子层的大小。 一旦你确定最宽的孩子只是改变表视图​​框架是相同的宽度。

相关问题