Я хочу сделать некоторые чертежи NSAttributedStrings в блоках фиксированной ширины, но у меня возникли проблемы с вычислением правильной высоты, которую они будут занимать при рисовании. До сих пор я пробовал:
-
Вызов
- (NSSize) size
, но результаты бесполезны (для этой цели), поскольку они будут давать любую ширину, которую хочет получить строка. -
Вызов
- (void)drawWithRect:(NSRect)rect options:(NSStringDrawingOptions)options
с прямоугольной формой в ширину, которую я хочу, иNSStringDrawingUsesLineFragmentOrigin
в параметрах, точно так же, как я использую в своем чертеже. Результаты... трудно понять; конечно, не то, что я ищу. (Как указано в ряде мест, в том числе this Cocoa -Dev thread). -
Создание временного NSTextView и выполнение:
[[tmpView textStorage] setAttributedString:aString];
[tmpView setHorizontallyResizable:NO];
[tmpView sizeToFit];
Когда я запрашиваю рамку tmpView, ширина по-прежнему будет такой же, как и высота, и высота часто правильная... пока я не дойду до более длинных строк, когда это часто бывает вдвое меньшим, чем требуется. (Кажется, что максимальный размер не попадает: один кадр будет 273.0 (около 300 слишком короткий), другой будет 478.0 (только 60-ий слишком короткий)).
Я был бы признателен за любые указатели, если кому-то это удалось.