NSTableView: создание "перекрывающихся" строк

Цель

У меня есть NSTableView в моем приложении, и я хотел бы нарисовать "перекрывающиеся" строки, чтобы создать эффект "соединения", как в Automator.app:

скриншот приложения Automator


Что я пробую

Подход, который я рассматриваю, заключается в использовании NSTableView -(NSRect)frameOfCellAtColumn:(NSInteger)columnIndex row:(NSInteger)rowIndex метод увеличения Y-начала координат всех строк после первого. Мой tableView основан на представлении и не использует автоматическое размещение.

Мой вопрос: это правильный путь для достижения этого эффекта? Кажется "опасным" иметь tableView для рисования строк с перекрывающимися фреймами, и я не могу понять, приведет ли это к куче дополнительного пустого пространства в нижней части tableView (потому что tableView не принимает перекрывающиеся области учитывается при расчете его общей высоты; он просто использует сумму значения rowHeight для каждой строки.)

Кто-нибудь знает, есть ли другой, канонический способ добиться эффекта от Automator tableView?

1 ответ

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

Пример Apple HoverTableDemo иллюстрирует некоторые из техник, и видео 120-й сессии WWDC 2011 "Просмотр на основе NSTableView от базового до расширенного" описывает их более подробно.

Я думаю, вы бы установили представление таблицы intercellSpacing для размещения размера изображения точки подключения. Вы бы установили gridStyleMask включать NSTableViewSolidHorizontalGridLineMask,

Вы бы использовали пользовательский подкласс NSTableRowView сделать пользовательский рисунок фона и разделителей (между рядами). Вы бы переопределить -drawBackgroundInRect: а также -drawSeparatorInRect: для тех.

Вы бы использовали пользовательский подкласс NSTableView сделать пользовательское рисование сетки за концом строк, которое может быть стрелкой внизу последней строки, если вы хотите. Вы бы переопределить -drawGridInClipRect: сделать это.

Другие вопросы по тегам