UITextView sizeThatFits возвращает другое значение после обновления - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть пользовательский UICollectionViewCell с UITextView, содержащийся в UICollectionView, предназначенный для системы комментирования.Я реализовал функцию обновления для обновления, чтобы представление коллекции получало последние комментарии и соответственно изменяло размер каждой ячейки.

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

Я установил контрольные точки, проверил их после вызова sizeThatFits и могу подтвердить fixedWidth, contentTextView.text и contentTextView.font не меняются между обновлениями, но результат, полученный от sizeThatFits, меняется по любой причине.

let fixedWidth = frame.width - userPicButtonDiameter*2 - 8
let textViewSize = contentTextView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
let insets: UIEdgeInsets = contentTextView.textContainerInset;
contentTextViewHeightConstraint.constant = textViewSize.height + insets.top + insets.bottom

Что еще может вызывать sizeThatFits для получения другого результата?

1 Ответ

1 голос
/ 20 апреля 2019

Вы можете попробовать

contentTextView.layoutIfNeeded() // restore actual size
let textViewSize = contentTextView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
let insets: UIEdgeInsets = contentTextView.textContainerInset;  
contentTextViewHeightConstraint.constant = textViewSize.height + insets.top + insets.bottom 
self.layoutIfNeeded() // refresh main view
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...