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