objective-c – 基于自定义视图的nstableview调整大小

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

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

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

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

最佳答案 如果您正在使用CALayer(让我们称之为根层)来绘制视图内容,请尝试创建另一个CALayer,它将是根层的子级(这将是音频轨道).您可以单独设置子图层的大小,也可以知道哪一个是最大的.

根层总是和表视图一样大,正如你所说:“NSView单元格似乎自动调整宽度到表格列的大小” – 不要试图改变根层大小,而是改变子层大小.

确定最宽的子项后,只需将表视图框更改为相同的宽度即可.

点赞