Предоставление NSTextView некоторого padding/a поля

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

Править: Немного больше информации: 1. Текстовое Представление просто имеет простой текст никакой обогащенный текст и никакой другой необычный материал как надлежащий текстовый редактор (например, вставки Абзаца). 2. Это возможный использовать setTextContainerInset: для этого?

13
задан Joshua 23 December 2009 в 12:52
поделиться

3 ответа

Вы можете попробовать использовать подкласс 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
17
ответ дан 1 December 2019 в 20:56
поделиться

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

4
ответ дан 1 December 2019 в 20:56
поделиться

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

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

.
2
ответ дан 1 December 2019 в 20:56
поделиться