NSString sizeWithAttributes: содержание реагирует

Как я получаю размер NSSTRING, как будто он потянул в NSRect. Проблема состоит в том, когда я пробую - [NSString sizeWithAttributes:], это возвращает NSSize, как будто это имело бесконечную ширину. Я хочу дать максимальную ширину методу. Есть ли какой-либо способ сделать так? (BTW: Mac OS, не iPhone OS)

Спасибо, Alex

11
задан Alexandre Cassagne 2 January 2010 в 21:39
поделиться

2 ответа

float heightForStringDrawing(NSString *myString, NSFont *myFont,
        float myWidth)
{
 NSTextStorage *textStorage = [[[NSTextStorage alloc] initWithString:myString] autorelease];
 NSTextContainer *textContainer = [[[NSTextContainer alloc] initWithContainerSize:NSMakeSize(myWidth, FLT_MAX)] autorelease];
 ;
        NSLayoutManager *layoutManager = [[[NSLayoutManager alloc] init] autorelease];
 [layoutManager addTextContainer:textContainer];
 [textStorage addLayoutManager:layoutManager];
 [textStorage addAttribute:NSFontAttributeName value:myFont
      range:NSMakeRange(0, [textStorage length])];
 [textContainer setLineFragmentPadding:0.0];

 (void) [layoutManager glyphRangeForTextContainer:textContainer];
 return [layoutManager
   usedRectForTextContainer:textContainer].size.height;
}

В конце концов, это было в документах. В любом случае, спасибо Джошуа!

18
ответ дан 3 December 2019 в 03:52
поделиться

Я полагаю, что единственный вариант здесь - это NSLayoutManager и запрос на объединение использованных выписок для заданного глиф-диапазона.

1
ответ дан 3 December 2019 в 03:52
поделиться