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

custom view-based nstableview resizing

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

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

目前,NSView 单元格似乎会自动调整宽度以适应 table 列的大小,因此我可以看到两种可能性:一种是让 NSView 单元格设置它们的宽度,以及以某种方式将其传播到其他任何地方。另一种是让 tableview 或 nstablecolumn 根据最大​​宽度设置其宽度。我已经尝试设置 NSTableColumn 宽度和最小宽度,但这似乎不起作用(如果尺寸很大,它并不总是调整到正确的尺寸)。

有什么建议或帮助来完成这项工作吗?

如果您正在使用 CALayer(我们称之为根层)来绘制视图内容,请尝试创建另一个 CALayer,它将成为根层的 child(这将是音轨) . child图层的大小可以独立设置,也可以知道哪个最大。 正如您所说,根层将始终与 table 视图一样大:"NSView cells seem to adjust width automatically to the size of the table column" - 不要尝试更改根层大小,而是 child 层大小。 确定最宽 child 后,只需将 table 视图框架更改为相同宽度即可。