Измените размер UITextView на размер его текста и уменьшите размер, если он больше высоты

Я пытаюсь сделать табличное представление, похожее на такие приложения, как facebook, где он показывает тексты сообщений, и если сообщение слишком велико, оно уменьшит размер и добавит кнопку «Подробнее». Я рассмотрел множество различных решений для изменения размера UITextViews до высоты их текста, однако ни один из них не решает мою проблему. Моя проблема существует только с большими сообщениями. Когда у меня есть большой пост, моя функция, которая возвращает высоту textView, должна вернуть maxHeight сообщений перед расширением. Эта часть работает. Однако, когда я нажимаю кнопку «Читать дальше», у меня есть огромное количество пробелов в нижней части полного текста. Вот мой код:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return heightForTextOfRow(indexPath.row) + PostCell.additionalVertSpaceNeeded } func heightForTextOfRow(row: Int) -> CGFloat { var textView = UITextView(frame: CGRectMake(0, 0, prototypeTextViewWidth, CGFloat.max)) let post = data[row] textView.text = (post.postText as NSString).stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) textView.textContainer.lineFragmentPadding = 0 textView.textContainerInset = UIEdgeInsetsZero textView.font = PostCell.textViewFont textView.frame.size = textView.sizeThatFits(CGSizeMake(prototypeTextViewWidth, CGFloat.max)) if textView.frame.size.height > maxHeight && !post.seeMore { return maxHeight } else { return textView.frame.size.height } } 

Некоторые объяснения кода:

  • data – массив сообщений (единственное, что имеет отношение к классу Post в этом случае, это то, что у него есть свойство postText и seeMore.)
  • PostCell.textViewFont является константой в одном из моих классов, который возвращает шрифт, который я использую (размер системного шрифта 13)
  • PostCell.additionalVertSpaceNeeded – это константа, которая возвращает высоту всех других элементов в моей ячейке прототипа, за исключением UITextView
  • prototypeTextViewWidth определяется как tableView.frame.width – 16 (16 – значение полей, добавленных вместе)
  • maxHeight – это максимальная высота сообщения, которое не хочет показывать полный пост (в настоящее время определяется как tableView.frame.height * 0.625 – PostCell.additionalVertSpaceNeeded)
  • seeMore – свойство Bool Post, которое сообщает, показывать или не показывать полный пост или показывать только часть сообщения (true показывает полный пост, false показывает сообщение высоты maxHeight)

Любая помощь будет оценена по достоинству … Я попробовал множество решений для изменения размера UITextView, и у всех есть такая же проблема. Заранее спасибо!

  • Цвет фона iOS - UITextAutocorrection
  • Определить URL-адрес в NSString
  • UITextField в iOS 8.1 имеет разное вертикальное выравнивание текста между режимом редактирования и без редактирования при использовании некоторых шрифтов
  • Добавить еще кнопку в конце текста внутри UITextView Objective-C?
  • Swift: настройка высоты линии UITextView
  • Как обнаружить отстыку, док или разделение нажата на iPad (iOS 5)
  • Добавить кнопку, чтобы скрыть клавиатуру
  • Исключить путь исключения UITextView textContainer, если полная ширина и расположение в верхней части textContainer
  • Кнопка триггера для изменения текста в UITextView в swift3 xcode 8 ios 10
  • UITextView textColor автоматически становится таким же, как цвет фона
  • IOS. UITextView. Текстовый прыжок после UIKeyboardDidHideNotification
  • Как свернуть текст в iOS 7?
  • Interesting Posts

    Почему Foundation.h не импортируется в стандартные шаблоны Xcode?

    Мониторинг потокового видео в реальном времени с использованием IP-адреса, порта и кривентистов

    Внедрение таймера обратного отсчета в Objective-c?

    Формат даты в ios7

    Как управлять сеансами с помощью AFNetworking?

    Представление / отклонение модального контроллера представления с настраиваемой анимацией не отображает представление контроллера представления под ним

    Новая ошибка установки установки: наш процесс установки изменился, см. Https:

    UISearchDisplayController – как предварительно загрузить searchResultTableView

    Регистрация для уведомлений Parse iOS7 и iOS8, предупреждения компилятора

    Получение ошибки при вызове API SOAP Magento в Objective-C

    Как заставить кнопку постоянно вызывать функцию при удержании (SpriteKit)

    Теория реализации iOS

    как сделать двойной круговой слайдер (функция часов как функция)

    Запросить контрольную сумму от Amazon S3 в iOS

    WKWebView с локальным файлом

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.