Изменение размера NSTextView
Я пытаюсь реализовать NSTextView
который изменяет размер, чтобы соответствовать его содержанию. Я пытаюсь сделать так, чтобы в нем было максимальное количество строк. Это означает, что при достижении этого предела он не будет расти дальше, и пользователь сможет его прокрутить.
Кажется, есть много людей, желающих этого, но я не нашел полной реализации этого.
Идея состоит в том, чтобы взять размер содержимого NSTextView
и измените его размер так, чтобы он соответствовал. Я просто не могу понять, как установить размер макета NSTextView
, Кажется, это не frame
который должен быть установлен и который можно ожидать.
Может кто-нибудь, пожалуйста, скажите мне, как установить рамку NSTextView
?
1 ответ
Оказывается, что высота представления прокрутки должна быть изменена. Изменение высоты NSTextView
может быть сделано путем перезаписи -didChangeText
метод как ниже.
- (void)didChangeText
{
NSScrollView *scrollView = (NSScrollView *) self.superview.superview;
NSRect frame = scrollView.frame;
// Calculate height
NSUInteger numberOfLines = [self numberOfLines];
NSUInteger height = frame.size.height;
if (numberOfLines <= 13)
{
height = 22 + (numberOfLines - 1) * 14;
if (height < 22)
height = 22;
}
// Update height
frame.size.height = height;
self.superview.superview.frame = frame;
}
Поиграйте с константами, чтобы получить желаемый результат.