Усекать NSTextView? - PullRequest
       4

Усекать NSTextView?

5 голосов
/ 13 ноября 2010

Я пытался использовать defaultParagraphStyle, но я не могу получить NSTextView (программно добавленный) для усечения текста с помощью многоточия (...).

Я устанавливаю фрейм во время initWithFrame (150, 20), а также я устанавливаю maxSize (150,20). Однако текст просто переполняется. Если я установлю высоту, где будет видна половина строки, я смогу увидеть верхнюю половину текста, однако вместо этого я хотел бы видеть текст, обрезанный многоточием.

Как я могу это сделать?

Ответы [ 3 ]

17 голосов
/ 15 ноября 2010

Если вы наведите курсор на соответствующий элемент управления в IB, вы можете увидеть объявление и краткую документацию по методу, который он запускает (обычно это метод получения, а не метод установки, но достаточно легко вывести одно из другого).Например, для всплывающего окна «Разрыв строки» вы увидите метод lineBreakMode.Затем вы можете использовать ваш любимый метод, чтобы найти его в XCode (например, «Быстро открыть»).

Итак, что вы хотите:

[[someTextField cell] setLineBreakMode:NSLineBreakByTruncatingTail];

или потенциально:

[[someTextField cell] setLineBreakMode:NSLineBreakByCharWrapping];
[[someTextField cell] setTruncatesLastVisibleLine:YES];
12 голосов
/ 20 декабря 2012

Это правильно, что написал Николай.

Я хотел бы добавить (потому что я трачу некоторое время на его поиск), если вы используете Auto Layout для NSTextView и окружающих NSView, вам следует установить Приоритет сопротивления сжатию содержимого NSTextView меньше NSLayoutPriorityWindowSizeStayPut (например, 499).В противном случае ваш NSTextView не будет усекать свое содержимое.

0 голосов
/ 07 января 2014

Другое название для этого могло бы быть:

Как ОСТАНОВИТЬ NSTextField от изменения размера вашего окна, когда его содержимое длиннее вашего окна!

Объединение ответов Николаса и Стефана помогло мне.

Я разместил ...

[[someTextField cell] setLineBreakMode:NSLineBreakByTruncatingTail];

... в ...

- (void)windowDidLoad

Или для тех, кто любит использовать конструктор интерфейсов ...

Используйте решение Стефана и измените макет NSTextField на Усеченные. Также проверьте, что такое разрыв строки - усеченный хвост сработал для того, что мне было нужно.

...