Я динамически изменяю размер шрифта всех ячеек в NSOutlineView. Я в состоянии успешно изменить фактический размер шрифта: (размер шрифта преувеличены для эффекта):Динамически изменяющаяся высота строки после размера шрифта всего NSTableView/NSOutlineView
id cell = [myOutlineColumn dataCell];
[cell setFont: [NSFont fontWithName: @"Geneva" size:32.0] ];
Но высоту строки строки в NSOutlineView не изменяются. Все ячейки имеют предыдущую высоту (17 pt), но с 32-кратным текстом. Я пробовал [myTable tile] и [myTable reloadData], но это не повторяет высоту строки.
Я видел -номерHeightOfRowsWithIndexesChanged. Является ли загрузка NSIndexSet и вызовом noteHeightOfRowsWithIndexesChanged единственным способом автоматической настройки строк?
Так что нет никакого способа для взять на себя, чтобы спросить клетки для их высоты и построить высоту строки из этого? – SMGreenfield
Не напрямую, потому что высоты ячеек не изменяются, пока вы не установите высоту строки в виде контура. То, что вы, вероятно, могли бы сделать, это call-cellSizeForBounds: на ячейке, передав FLT_MAX для прямой высоты. Я делаю это в виде схемы, который имеет переменную высоту строки для ячеек, которые могут обертывать текст, но это, вероятно, слишком велико, если все ваши строки будут одинаковой высоты. То, как я делаю это для случая, подобного вашему, - это вызвать пользовательскую функцию, чтобы получить максимальную высоту шрифта, используя NSLayoutManager's -defaultLineHeightForFont :, затем добавьте пару пикселей и установите это значение с помощью -setRowHeight. – kayembi
Я обновил свой ответ выше, используя код, который я использую, чтобы вычислить наилучшую высоту строки для используемого шрифта. – kayembi