2016-02-08 4 views
1

В моем UIViewController у меня есть редактируемый атрибут UITextView с включенной прокруткой, и я бы хотел изменить размер прокручиваемого текста, чтобы он соответствовал ширине экрана без лишнего пробела. Я использую AutoLayout и настраиваю выходы для textview и его ограничения по высоте. В методе viewDidLoad контроллера view я использую метод sizeThatFits для обновления высоты текстового поля, но результирующий размер слишком мал.AutoLayout Scrolling UITextView sizeThatFits не работает

- (void)viewDidLoad{ 
    [super viewDidLoad]; 
    NSLog(@"INIT HEIGHT: %f, myTextView.frame.size.height); 
    CGSize sizeToFit = 
    [myTextView sizeThatFits: CGSizeMake(myTextView.frame.size.width, MAXFLOAT)]; 
    myTextViewHeightConstraint.constant = sizeToFit.height; 
    [myTextView updateConstraints]; 
    [myTextView layoutIfNeeded]; 
    NSLog(@"NEW HEIGHT: %f", myTextView.frame.size.height); 
} 

Журнал указывает, что высота была действительно изменилась с моего дефолта 4000 до 2502, но с 2502 я вижу только около половины моего текста с помощью скроллинга. Я избегаю вложения текстового представления в виде прокрутки, как предлагает одно из решений, поскольку это не рекомендуется в документации. Что мне не хватает? Заранее спасибо.

ответ

0

Я обнаружил, что рамка UITextView будет автоматически изменяться по своему содержанию, поэтому динамическая настройка не требуется. sizeThatFits является UIView метод и не изменяет размер текстового содержимого, а размер окна, что текст отображается в Единственный код, что мне было нужно, чтобы прокрутить текст в верхней части:.

[myTextView scrollRectToVisible: CGRectMake(0,0,1,1) animated:NO]; 

Это, а также любые обновления ограничений Autolayout не должны быть сделаны в viewDidLoad, а скорее в viewDidLayoutSubviews или viewWillAppear. Лучшее место размещения, вероятно, можно объяснить лучше - я открыт для комментариев.

Смежные вопросы