UITextView, sizeToFit не работает
У меня есть uitextview, я хотел бы динамически загрузить его в зависимости от содержимого, ответ по этой ссылке не работает на iOS11. /questions/11468797/uitextview-sizetofit-ne-rabotaet/11468802#11468802
CGFloat fixedWidth = textView.frame.size.width;
CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
CGRect newFrame = textView.frame;
newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height);
textView.frame = newFrame;
Единственный способ, которым я могу сделать, это использовать ограничение обновления ограничения
CGFloat fixedWidth = self.textView .frame.size.width;
CGSize newSize = [self.textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
self.textViewHeightConstraint.constant = newSize.height;
Я работаю над универсальным приложением и не хочу использовать слишком много ограничений в коде. Есть ли способ исправить это без добавления дополнительных ограничений?
2 ответа
Я пробовал layoutifneeds, setneedforlayout, все эти функции не изменяют размер контейнера просмотра uitextview, даже если вы измените размер контейнера, uitextview останется в исходном размере.
Изучив иерархию пользовательского интерфейса uitextview, я обнаружил, что простой способ изменить высоту uitextview - это layoutsubviews.
[self.textview sizetofit];
[self.textview layoutsubviews];
Вам может потребоваться установить текстовую высоту>= минимальная высота в xib-файле.
Есть много вопросов, касающихся динамической высоты uitextview, и я не могу найти этот ответ, к сожалению, я не могу опубликовать ответ на эти вопросы, если вы считаете этот ответ полезным, поделитесь им с другими подобными вопросами.
У меня была аналогичная проблема, и я обнаружил, что мне нужно установить
scrollingEnabled
к
false
, тогда
sizeToFit()
должно сработать.