Увеличьте слишком узкий интервал между значками в NSOutlineView

StackOverflow https://stackoverflow.com/questions/1442723

Вопрос

Я пишу приложение Cocoa, которое отображает содержимое архивного файла в Просмотр NSOutlineView.Я предоставляю пользовательские иконки для NSBrowserCell в столбце "структура", но мне не удалось правильно расставить интервалы — значок папки всегда отображается слишком близко к треугольнику раскрытия, как показано ниже.(FWIW, Версии и Лучшая застежка - молния оба отображают похожие данные без проблем с интервалами.)

NSOutlineView-интервал между значками http://img.skitch.com/20090918-tgfjh9x8dhgqxqnb2su8fby4ng.jpg

Поскольку эта проблема будет возникать только с значками папок, я действительно забочусь только об исправлении интервала в этом контексте.(ПРИМЕЧАНИЕ:Я уже кэширую значки для повторного использования, поэтому у меня нет проблем с манипулированием изображением папки, если это необходимо, поскольку в любом случае это произойдет только один раз.) Я не уверен, есть ли что-то, что я могу настроить в экземпляре NSBrowserCell, но я пока не нашел ничего, что работало бы, не из-за отсутствия попыток.


Для любознательных, Джарскан это удобный (бесплатный) инструмент командной строки для поиска классов Java в файлах JAR.

Это было полезно?

Решение

"Столбец таблицы структуры" (см. -[NSOutlineView outlineTableColumn]) является NSTableColumn - столбец это рисует треугольник и левое заполнение по мере необходимости для отображения иерархии.Ячейкой по умолчанию для отображения содержимого таблицы является NSTextFieldCell - ячейка NSTextFieldCell.Чтобы увеличить интервал, который вы видите, вы должны выполнить рисование в пользовательском подклассе NSTextFieldCell .Интервал достигается путем рисования вашего изображения со смещением x.(Контурный вид нарисует треугольник раскрытия независимо от того, какой подкласс NSCell используется.)

Обратите внимание, что вам, возможно, придется переопределить следующие методы для корректного рисования, когда ячейка может быть введена, выбрана для редактирования и всплывающая подсказка:

По умолчанию ваши пользовательские текстовые прямоугольники будут игнорироваться текстовым полем, и они будут отображаться странно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top