Как я дал бы NSTextView некоторое padding/a поле налево? Я знаю, как Вы делаете это в NSTextField (путем разделения на подклассы NSTextFieldCell), но как дела это в NSTextView?
Править: Немного больше информации: 1. Текстовое Представление просто имеет простой текст никакой обогащенный текст и никакой другой необычный материал как надлежащий текстовый редактор (например, вставки Абзаца). 2. Это возможный использовать setTextContainerInset: для этого?
Вы можете попробовать использовать подкласс 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
TextEdit делает это (в режиме переноса на страницу), помещая текстовое представление внутрь более крупного вида и устанавливая это увеличенное представление как представление документа в режиме прокрутки. Это больше работы для настройки, но это не приведет к утечке информации о презентации (в виде специально настроенного стиля абзаца) в модель (текст).
Создайте мутируемый стиль абзаца (скорее всего, сделав мутируемую копию стиля абзаца по умолчанию, затем установите отступ для его заголовка и отступ для заголовка первой строки на нужное вам левое поле. Затем установите этот стиль абзацев в качестве значения атрибута NSParagraphStyleAttributeName
для всего содержимого текстового хранилища вида.
Обратите внимание, что это будет отображаться в RTF и, возможно, HTML данных, полученных от/данных вам видом. Если вид не доступен только для чтения (т.е. пользователь может редактировать текст, и вы получите или получите этот текст из вида), то вам, вероятно, следует избегать этого решения. Если пользователь может сам показать линейку и отредактировать стиль абзаца, то вам следует определённо избежать этого решения.
.