Pergunta

Eu estou escrevendo um aplicativo de cacau que exibe o conteúdo de um arquivo em um NSOutlineView . I fornecer ícones personalizados para um NSBrowserCell na coluna esboço, mas eu não tenho sido capaz de obter o espaçamento muito bem - o ícone da pasta sempre aparece muito perto do triângulo, como mostrado abaixo. (FWIW, Versões e BetterZip tanto exibição de dados semelhantes sem os problemas de espaçamento.)

NSOutlineView-ícone espaçamento http://img.skitch.com/20090918-tgfjh9x8dhgqxqnb2su8fby4ng. jpg

Uma vez que somente ícones de pasta terá esse problema, eu realmente só se preocupam com a fixação do espaçamento nesse contexto. (NOTA: Eu já estou cache os ícones para reutilização, por isso tenho nenhum problema com a manipulação da imagem da pasta, se necessário, uma vez que só vai acontecer uma vez de qualquer maneira.) Eu não tenho certeza se há algo que eu possa ajustar na instância NSBrowserCell , mas eu não encontrei nada que funciona ainda, não por falta de tentativa.


Para os curiosos, JarScan é um prático (gratuito) ferramenta de linha de comando para localizar classes Java dentro de JAR arquivos.

Foi útil?

Solução

O "esboço tabela coluna" (ver -[NSOutlineView outlineTableColumn] ) é o NSTableColumn que desenha o triângulo e preenchimento à esquerda, conforme necessário para exibir a hierarquia. A célula padrão para a exibição de conteúdo da tabela é um NSTextFieldCell . Para aumentar o espaçamento que você vê, você tem que fazer o desenho em um costume NSTextFieldCell subclasse. O espaçamento é conseguido através do desenho a sua imagem com um X offset. (O ponto de vista do esboço irá chamar o triângulo independentemente de qual subclasse NSCell é usado.)

Note que você pode ter que substituir os seguintes métodos para desenhar corretamente quando a célula pode ser digitada, selecionada para edição, e a dica:

Por padrão seus rects texto personalizado será ignorado pelo campo de texto e estes irão desenhar estranhamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top