Динамическая ширина UITextView в соответствии с текстом внутри UITableViewCell - PullRequest
0 голосов
/ 14 февраля 2019

Я работаю над созданием пузыря чата, как в iMessage.Я должен использовать UITextView, чтобы использовать DataDetectors для автоматического определения URL, телефонных номеров и адресов.Моя иерархия представлений выглядит так:

-UITableViewCell
 -ContentView
  -ChatBubbleContainerView
   -UITextView

ChatBubbleContainerView имеют ограничения

  • 10-pt слева, справа, сверху и снизу полей -> ContainerView

UITextView имеет ограничения

  • 10 пт слева, справа, сверху и снизу полей -> ChatBubbleContainerView

Я хочу достичьповедение, чтобы заставить текстовое представление автоматически расширять его высоту и ширину согласно его содержанию внутри, например, текста.Но текстовое представление не имеет внутреннего размера контента .

Это то, что я пробовал и получил неправильные результаты

  1. Переопределение intrinsicContentSize свойство текстового представления, но оно тоже не работает.
  2. Задание ограничения ширины для ChatBubbleContainerView и изменение его на результат sizeThatFits() method
  3. Задание ограничения ширины для ChatBubbleContainerView и изменив его на результат text.boundingRect метода

Это результаты, которые я получил

  1. Это не работает должным образом иЯчейка не выкладывается так, как ожидалось, когда я прокручиваю представление таблицы
  2. Она работает, но начальная ширина ячейки в кончике составляет 375 пт, что хорошо для 4,7-дюймовых устройств, но когда я переключаюсь на устройства, такие как iPhone SEкоторый имеет 4 дюйма при начальной загрузке табличного представления или вставке ячейки, ширина ячейки вычисляется в соответствии с 375 пунктами, а не 320 пунктами.После прокрутки ячейки макет раскладывается, как и ожидалось.
  3. То же самое с 2.

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

Спасибо

1 Ответ

0 голосов
/ 14 февраля 2019

Ограничения TextView хороши, вам нужно внести некоторые изменения в ограничения ChatBubbleContainerView.

Ограничение ChatBubbleContainerView:

  • вверху, впереди, внизу -> 10 пунктов

  • MaxWidth (GreaterThanOrEqual) для contentView, например 0.85 , или вы можете установить TrailingConstraint с maxConstant (GreaterThanOrEqual для contentView.

youнеобходимо установить maxWidth, тогда только ChatBubbleContainerView будет реагировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...