Высота строки NSTableView на основе NSStrings

В основном у меня есть NSTableView с 1 столбцом, и я вставляю длинные строки в каждую строку. Однако не все строки длинны, таким образом, я хотел бы, чтобы высота каждой строки отличалась на основе того, какой длины строка.

Я выяснил, что должен спросить столбец, насколько широкий это, и затем спросите строку, сколько строк это поднимет, если столбец будет настолько широк, и затем решите, насколько "высокий" NSCell будет. Но как точно я иду о выполнении этого? Я получил столбец width от:

[[[tableView tableColumns] objectAtIndex:0] width];

но я не могу выяснить, как спросить NSString, сколько пространства он поднимет. Или, возможно, существует лучший путь, которым я должен пойти о выполнении этого?

Спасибо за любую справку заранее.

6
задан element119 9 July 2010 в 11:52
поделиться

1 ответ

Создайте экземпляр NSTextFieldCell и сопоставьте его шрифт / размер / и т. Д. к ячейке данных вашего столбца. Спросите у него -cellSizeForBounds: , передающий прямоугольник желаемой ширины для столбца с большой высотой (FLT_MAX?). В результате должен получиться размер NSSize, высоту которого вы можете использовать.

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

10
ответ дан 8 December 2019 в 04:07
поделиться