我正在编写一个Cocoa应用程序,它在NSOutlineView中显示存档文件的内容。我在大纲列中为NSBrowserCell提供了自定义图标,但我无法将间距调得恰到好处 - 文件夹图标总是显得太靠近显示三角形,如下所示。 (FWIW,Versions和BetterZip都显示相似的数据而没有间距问题。)
NSOutlineView-icon-spacing http://img.skitch.com/20090918-tgfjh9x8dhgqxqnb2su8fby4ng.jpg
由于只有文件夹图标会出现此问题,我真的只关心修复该上下文中的间距。 (注意:我已经缓存了图标以便重复使用,所以我在必要时操作文件夹图像没有问题,因为它只会发生一次。)我不确定我是否可以在NSBrowserCell实例中调整,但我还没有找到任何可行的东西,而不是因为没有尝试。
对于好奇,JarScan是一个方便(免费)的命令行工具,用于在JAR文件中定位Java类。
答案 0 :(得分:3)
“大纲表列”(请参阅-[NSOutlineView outlineTableColumn]
)是NSTableColumn,它根据需要绘制三角形和左边距以显示层次结构。显示表格内容的默认单元格为NSTextFieldCell。要增加您看到的间距,您必须在自定义NSTextFieldCell子类中进行绘制。通过使用x偏移绘制图像来实现间距。 (无论使用哪个NSCell子类,大纲视图都将绘制显示三角形。)
请注意,当可以输入单元格,选择进行编辑以及工具提示时,您可能必须覆盖以下方法才能正确绘制:
-[NSCell editWithFrame:inView:editor:delegate:event:]
-[NSCell selectWithFrame:inView:editor:delegate:start:length:]
-[NSCell expansionFrameWithFrame:inView:]
默认情况下,文本字段会忽略您的自定义文本rects,这些将会奇怪地绘制。