Pregunta

Estoy escribiendo una aplicación Cocoa que muestra el contenido de un archivo en un NSOutlineView . Proporciono iconos personalizados para un NSBrowserCell en la columna de esquema, pero no he podido obtener el espacio correcto & # 8212; el icono de la carpeta siempre aparece demasiado cerca del triángulo de revelación, como se muestra a continuación. (FWIW, Versiones y BetterZip ambos muestran datos similares sin los problemas de espacio.)

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

Dado que solo los iconos de carpeta tendrán este problema, realmente solo me importa arreglar el espacio en ese contexto. (NOTA: ya estoy almacenando en caché los iconos para su reutilización, por lo que no tengo problemas para manipular la imagen de la carpeta si es necesario, ya que de todos modos solo sucederá una vez). No estoy seguro de si hay algo que pueda ajustar en la instancia de NSBrowserCell , pero aún no he encontrado nada que funcione, no por falta de intentos.


Para los curiosos, JarScan es una práctica herramienta de línea de comandos (gratuita) para localizar clases Java en JAR archivos.

¿Fue útil?

Solución

La " columna de la tabla de esquema " (consulte - [NSOutlineView outlineTableColumn] ) es el NSTableColumn que dibuja el triángulo y el relleno izquierdo según sea necesario para mostrar la jerarquía. La celda predeterminada para mostrar el contenido de la tabla es un NSTextFieldCell . Para aumentar el espacio que ve, debe hacer el dibujo en una subclase NSTextFieldCell personalizada. El espaciado se logra dibujando su imagen con un desplazamiento x. (La vista de esquema dibujará el triángulo de revelación independientemente de la subclase NSCell que se use).

Tenga en cuenta que es posible que tenga que anular los siguientes métodos para dibujar correctamente cuando la celda se puede escribir, seleccionar para editar y la información sobre herramientas:

Por defecto, sus campos de texto ignorarán sus textos personalizados y estos se dibujarán de manera extraña.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top