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()должно сработать.

Другие вопросы по тегам