В основном у меня есть NSTableView с 1 столбцом, и я вставляю длинные строки в каждую строку. Однако не все строки длинны, таким образом, я хотел бы, чтобы высота каждой строки отличалась на основе того, какой длины строка.
Я выяснил, что должен спросить столбец, насколько широкий это, и затем спросите строку, сколько строк это поднимет, если столбец будет настолько широк, и затем решите, насколько "высокий" NSCell будет. Но как точно я иду о выполнении этого? Я получил столбец width от:
[[[tableView tableColumns] objectAtIndex:0] width];
но я не могу выяснить, как спросить NSString, сколько пространства он поднимет. Или, возможно, существует лучший путь, которым я должен пойти о выполнении этого?
Спасибо за любую справку заранее.
Создайте экземпляр NSTextFieldCell и сопоставьте его шрифт / размер / и т. Д. к ячейке данных вашего столбца. Спросите у него -cellSizeForBounds:
, передающий прямоугольник желаемой ширины для столбца с большой высотой (FLT_MAX?). В результате должен получиться размер NSSize, высоту которого вы можете использовать.
Сложнее становится, если у вас более одного многострочного текстового столбца, потому что вам нужно учитывать все ячейки в этой строке, принимая наибольшую высоту в качестве высоты строки. Если вы ожидаете, что в среднем будет много строк, вы, вероятно, захотите кэшировать эту работу, обновляя ее по мере необходимости, а затем просто ссылаться на нее при вызове метода делегата высоты строки.