Предоставление NSTextView некоторого отступа / поля - PullRequest
13 голосов
/ 23 декабря 2009

Как бы я дал NSTextView какой-нибудь отступ / поле слева? Я знаю, как вы делаете это в NSTextField (путем подкласса NSTextFieldCell), но как вы делаете это в NSTextView?

РЕДАКТИРОВАТЬ: немного больше информации: 1. В текстовом представлении просто есть простой текст, нет форматированного текста и нет других причудливых вещей, таких как правильный текстовый редактор (например, вставки абзацев). 2. Можно ли использовать setTextContainerInset: для этого?

Ответы [ 4 ]

17 голосов
/ 23 декабря 2009

Вы можете попробовать создать подкласс NSTextView и переопределить textContainerOrigin.

Подробности здесь .

Например, этот подкласс даст верхний и нижний поля в 5 слева20 и право 10.

@implementation MyTextView

- (void)awakeFromNib {
    [super setTextContainerInset:NSMakeSize(15.0f, 5.0f)];
}


- (NSPoint)textContainerOrigin {
    NSPoint origin = [super textContainerOrigin];
    NSPoint newOrigin = NSMakePoint(origin.x + 5.0f, origin.y);
    return newOrigin;
}

@end
5 голосов
/ 15 мая 2014

Просто чтобы добавить обновление к этому. iOS7 добавляет свойство в UITextView с именем textContainerInset. Вызов setTextContainerInset создаст поля внутри TextView для содержимого.

4 голосов
/ 23 декабря 2009

То, как TextEdit делает это (в режиме «Перенос на страницу»), заключается в том, чтобы поместить текстовое представление внутри более крупного представления и установить это более крупное представление как представление документа представления прокрутки. Это большая работа по настройке, но она не утечет информацию о представлении (в форме специально настроенного стиля абзаца) в модель (текст).

2 голосов
/ 23 декабря 2009

Создайте изменяемый стиль абзаца (скорее всего, создав изменяемую копию стиля абзаца по умолчанию, затем установите его отступ для заголовка и заголовок первой строки на желаемое поле слева. Затем установите этот стиль абзаца в качестве значения атрибут NSParagraphStyleAttributeName для всего содержимого текстового хранилища представления.

Обратите внимание, что это будет отображаться в формате RTF и, возможно, в HTML-данных, полученных / предоставленных вам представлением. Если представление не только для чтения (т. Е. Пользователь может редактировать текст, а вы извлекаете или получаете этот текст из представления), то вам, вероятно, следует избегать этого решения. Если пользователь может показать линейку и отредактировать стиль абзаца самостоятельно, вам следует определенно избежать этого решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...