Поместить градиент во все, кроме выбранной строки NSTableView - PullRequest
1 голос
/ 04 июня 2011

Я пытаюсь выделить строку в NSTableView, используя CALayer. Я хотел бы, чтобы при щелчке по определенной строке окружающие строки стали бледнее, чтобы выбранная строка была четко сфокусирована и выделена.

Я не уверен, как лучше всего добиться этого, но сначала я подумал о том, чтобы сначала включить мой NSTableView в пользовательский вид и позволить слою вида обладать способностями CALayer. Затем я мог бы отслеживать местоположение мыши в этом представлении, и если пользователь щелкает, я знаю местоположение щелчка относительно [layer bounds] и могу выделить области выше и ниже (например, 10 точек), где пользователь щелкнул на всю ширину. Тем не менее, пользователь может не щелкнуть идеально в середине строки, что создаст перекошенную область выделения.

Мои вопросы: есть ли лучший способ сделать это? Может ли NSTableView сделать CALayer простым способом, который позволяет мне выделить определенную строку, поместив градиент на оставшиеся видимые строки? Можно ли избежать фона пользовательского вида?

1 Ответ

3 голосов
/ 05 июня 2011

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

С вашей идеей вам нужно будет отследить текущее положение скроллеров табличного представления и отрегулировать выделение в соответствии с вашими предпочтениями. Звучит как кошмар.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...