Установка цветов и высоты строк для 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

Результат без использования heightOfRowsByItem

РЕДАКТИРОВАТЬ: я вроде как решил эту проблему, установив outlineView backgroundColor в цвет, который я хочу для строк заголовка, а затем установив цвет других строк на белый. Это заполняет пробел, как можно увидеть ниже, но все же кажется, что это обходной путь.

1 ответ

Другой способ решить эту проблему - установить высоту NSTableCellView, используемую для заголовков.

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