UITextView не может изменить размер с помощью автоматического макета

У меня есть файл XIB, содержащий представление с UITextView в качестве подпредставления. Этот textView имеет высоту 30 пикселей, потому что его размер должен изменяться в соответствии с его содержимым.

Итак, я задаю текст программно, вызываю -sizeToFit и перенастраиваю фрейм textView и его супервью:

[_textView setText:[contents objectForKey:@"body"]];
[_textView sizeToFit];

CGSize txtSize = _textView.contentSize;
txtSize.height = _textView.frame.size.height;
_textView.contentSite = txtSize;

CGRect superFrame = _textView.superView.frame;
superFrame += _textView.contentSize.height;
_textView.superView.frame = superFrame;

SuperView действительно правильно изменяет размер. Кроме того, при регистрации фрейма текстовых представлений и размера содержимого на консоли все выглядит нормально (около 1200 пикселей в высоту).

Но textView имеет высоту всего 30 пикселей на экране. Также звонок -setNeedsLayout не помог.

В чем тут может быть дело?


person Julian F. Weinert    schedule 17.10.2013    source источник


Ответы (1)


Это ошибка, с которой я столкнулся пару дней назад. Кажется, что UITextView отрезает часть текста независимо от высоты, если его прокрутка отключена.

Решение, которое работает в определенных ситуациях:

[_textView setScrollEnabled:YES];
[_textView setText:text];
[_textView setScrollEnabled:NO];

Я сообщил об этой ошибке в Apple, но предлагаю вам сделать то же самое.

person Nikola Lajic    schedule 17.10.2013
comment
К сожалению, это не то, что я ищу. Я хочу настроить фактический размер textView в соответствии с его содержимым. У меня есть представление, которое отображает статью. И это должно становиться все длиннее и длиннее. Поэтому я не прокручиваю текстовое представление, но это суперпросмотр. - person Julian F. Weinert; 17.10.2013
comment
Да, точно такая же проблема у меня была. Я хотел прокрутить суперпросмотр и из-за этого отключенного прокрутки в текстовом представлении. Решение, которое я использовал в конце, заключается в том, что я оставил прокрутку включенной, так как я уже изменяю размер текстового представления. - person Nikola Lajic; 18.10.2013