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