Расширение таблицы 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 } 

2 Solutions collect form web for “Расширение таблицы viewview на основе номера строки UIlabel”

Вы можете использовать размер динамических ячеек таблицы с автозапуском в сочетании с свойством 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]; 
  • Как использовать UITableView внутри UIScrollView и получать щелчок на ячейке?
  • Swift: позиция iAd UITableViewController
  • Получите IndexPath из подкласса UITableViewCell в Swift
  • Правильное возвращение UIView в viewForHeaderInSection iOS 8 swift
  • Изменить UILabel textColor, когда UITableViewCell выделен?
  • Как настроить высоту табличного представления программно в viewdidload
  • UITableView странные изменения поведения макета в прокрутке
  • Как программно выбирать строку в таблице
  • UITableViewCells с перекрытием UIButton при прокрутке
  • Внешний вид UITableViewCell не меняет шрифт textLabel
  • искать в сгруппированном uitableview
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.