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