2010-10-30 2 views
3

Я ищу для вставки содержимого NSTableView так, чтобы между верхним видом таблицы и первой ячейкой был промежуток.NSTableView content view inset

На iOS это легко с UITableView - достигается с помощью setContentInset :.

+0

Что именно вы подразумеваете под «верхней частью таблицы»? Просмотр заголовка? Или вам нужен пробел над заголовком? –

+0

Это представление таблицы без заголовка. Я просто хочу, чтобы первая ячейка начала в позиции, которую я определяю. – firstresponder

ответ

1

Включите заголовки и замените заголовок на свой собственный подкласс. Переопределите его -drawRect: нарисуйте только свой цвет фона. Кроме того, override -headerRectOfColumn: для предотвращения рисования любого заголовка столбца. Я не уверен, что это предотвратит перетаскивание или сортировку столбцов, но я готов поспорить, что это так.

+1

Это было выбрано в качестве ответа, но не действует одинаково - оно всегда будет иметь цветной заголовок, даже если вы прокрутите вниз. – Dan2552

+0

Да, это звучало так, как хотелось бы оригинальному плакату (тем более, что он принял ответ). Поскольку свойство contentInset отсутствует, это будет самое близкое, что вы получите, не вставляя фиктивную строку или определяя представление ячейки со специальным размером строки/макетом для строки == 0. –

0

Это не очень чисто, но вы можете достичь этого, имея первую строку выше остальных. Реализовать метод делегата heightOfRow таблицы:

- (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row 
{ 
    if (row == 0) { 
    return normalRowHeight + topPadding; 
    } else { 
    return normalRowHeight; 
    } 
} 

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