Как создать авторазмер NSTextView для печати? - PullRequest
1 голос
/ 03 ноября 2011

Вот что я хочу сделать: создать представление для печати текста с несколькими абзацами.На стороне каждого абзаца я хочу, чтобы текст аннотации отображался.

Таким образом, в drawRect мне нужно создать экземпляр NSTextView (на LHS) и соответствующий NSTextView справа от него.За которой следует другая пара, и так далее, и так далее ...

Вопрос в том, как создать текстовое представление, ограниченное по ширине, но не ограниченное по высоте?Я знаю, какой шрифт будет использоваться, и его размер, но высота также зависит от переноса текста, который я не знаю, как объяснить ...

1 Ответ

1 голос
/ 03 ноября 2011

Вы спрашиваете, как рассчитать правильный размер прямоугольника, который вы должны использовать для создания нового текстового представления? Если это так, вот метод, демонстрирующий, как использовать метод sizeWithAttributes NSString:

- (BOOL) doesString:(NSString *)string fitInRectOfSize:(NSSize)rectSize usingFont:(NSFont *)font {
    NSMutableDictionary *fontAttrs = [[NSMutableDictionary alloc] init];
    NSSize sizeFilled = [string sizeWithAttributes:fontAttrs];
    [fontAttrs release];
    if (sizeFilled.width <= rectSize.width && sizeFilled.height <= rectSize.height)
            return YES;
    else 
            return NO;
}

Что касается переноса текста, если текст был введен в NSTextView, строка будет иметь символы \ n при разрывах мягкой строки. Если вы оставите их в, stringWithAttributes примет их во внимание.

...