Установка цветов и высоты строк для NSOutlineView (выбран вариант просмотра на основе и списка источников)
Я настроил NSOutlineView, используя функции делегатов, чтобы отрегулировать высоту и цвет строк для элементов группы, используя следующее:
- (void)outlineView:(NSOutlineView *)outlineView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row {
LOG(@"didAddRowView called");
if ([self outlineView:outlineView isGroupItem:[outlineView itemAtRow:row]])
[rowView setBackgroundColor:[NSColor controlColor]];
}
- (CGFloat)outlineView:(NSOutlineView *)outlineView heightOfRowByItem:(id)item {
if ([self outlineView:outlineView isGroupItem:item])
return 24.0;
else
return 36.0;
}
Это почти работает, результат показан ниже. Между последней строкой раздела и заголовком следующего раздела есть небольшой разрыв. Может кто-нибудь пролить свет на то, что это может быть и как это удалить. Может быть, это какой-то нижний колонтитул, и если да, то есть ли API для его настройки? Нижняя картинка - это то, что я получу, если уберу outlineView:heightOfRowsByItem
полностью.
Результат без использования heightOfRowsByItem
РЕДАКТИРОВАТЬ: я вроде как решил эту проблему, установив outlineView backgroundColor в цвет, который я хочу для строк заголовка, а затем установив цвет других строк на белый. Это заполняет пробел, как можно увидеть ниже, но все же кажется, что это обходной путь.
1 ответ
Другой способ решить эту проблему - установить высоту NSTableCellView, используемую для заголовков.