Расширение таблицы viewview на основе номера строки UIlabel

У меня есть пользовательский UITableViewCell с UILabel который имеет несколько строк. Я пытаюсь реализовать функцию разворота / контракта с краном, так что, когда метка является только одной строкой, расширение не происходит, когда вы нажимаете на ячейку, но если метка имеет несколько строк, ячейка способна расширять / сокращать при нажатии. Я получил расширение и заключение контрактов, но я не могу понять, как заставить его работать на основе количества строк в UILabel .

В настоящее время это то, что я делаю для расширения ячеек, но оно вообще не основано на UILabel .

 func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { if (indexPath.row == self.selectedRow?.row && self.expand == true) { self.previousRow = self.selectedRow?.row return 200 } else if(self.previousRow == self.selectedRow?.row && self.expand == false){ return 65 } return 65 } 

Вы можете использовать размер динамических ячеек таблицы с автозапуском в сочетании с свойством numberOfLines UILabel для расширения и сжатия ячейки.

Сердцем решения является следующее:

 tableView.beginUpdates() label.numberOfLines = label.numberOfLines == 0 ? 1 : 0 tableView.endUpdates() 

Это по сути вызывает анимацию в таблице и переключает количество строк от 0 (любое количество строк) до 1 строки. Autolayout делает все остальное.

Я думаю, что это лучше, чем обновление метрик высоты вручную. Полный пример проекта можно найти на моем github: https://github.com/rayfix/MultilineDemo

демонстрация

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

Что-то вроде этого (100000 просто должно быть большим числом)

 CGSize textSize = [self.label.text sizeWithFont:self.label.font constrainedToSize:CGSizeMake(self.label.bounds.width, 100000) lineBreakMode: UILineBreakModeWordWrap]; 
  • Службы вылетают во время перезагрузки коллекции в UITableViewCell
  • Содержимое текстовой метки ячейки интерфейса UItableviewcontroller не отображается
  • UITableView загружается с ячейками в середине TableView. Зачем?
  • Добавить subview в пользовательский класс
  • UITableViewCellSeparatorStyleNone не работает с UITableViewStyleGrouped
  • ios UITableView -> UITableViewCellSeparatorStyleNone оставляет строку с одной высотой пикселя
  • UISearchController - панель поиска должна быть видимой всегда
  • Пользовательская ячейка неправильно рисуется при вставке строки с использованием метода insertRows (atPaths)
  • Циклические данные в UICollectionView (или UITableView) swift
  • Нарисуйте нижнюю границу нижней границы для UITableViewCell
  • как добавить UINavigationController UIToolbar в верхнюю часть представления не внизу
  • Interesting Posts
    Давайте будем гением компьютера.