我正在编写一个 Cocoa 应用程序,它在一个文件中显示存档文件的内容 NSOutlineView. 。我为一个提供自定义图标 NS浏览器单元 在大纲列中,但我无法获得正确的间距 - 文件夹图标总是离显示三角形太近,如下所示。(FWIW, 版本更好的拉链 两者都显示相似的数据,没有间距问题。)

NSOutlineView-icon-spacing http://img.skitch.com/20090918-tgfjh9x8dhgqxqnb2su8fby4ng.jpg

由于只有文件夹图标会出现此问题,因此我实际上只关心修复该上下文中的间距。(笔记:我已经缓存了图标以供重用,因此如果有必要,我可以操作文件夹图像,因为无论如何它只会发生一次。)我不确定是否可以在 NSBrowserCell 实例中调整某些内容,但我还没有找到任何有效的方法,并不是因为缺乏尝试。


对于好奇的人来说, 贾尔扫描 是一个方便(免费)的命令行工具,用于在 JAR 文件中查找 Java 类。

有帮助吗?

解决方案

“大纲表列”(参见 -[NSOutlineView outlineTableColumn]) 是个 NSTableColumn 根据需要绘制三角形和左侧填充以显示层次结构。显示表格内容的默认单元格是 NSTextFieldCell. 。要增加您看到的间距,您必须在自定义 NSTextFieldCell 子类中进行绘图。间距是通过使用 x 偏移绘制图像来实现的。(无论使用哪个 NSCell 子类,轮廓视图都会绘制显示三角形。)

请注意,当可以输入单元格、选择单元格进行编辑以及显示工具提示时,您可能必须重写以下方法才能正确绘制:

默认情况下,您的自定义文本矩形将被文本字段忽略,并且这些矩形会绘制得很奇怪。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top