tableView не устанавливает автоматическую высоту строки

В моем проекте у меня есть статический tableView с 3 разделами. Ячейка во втором разделе содержит метку, которая динамически заполнена и поэтому имеет динамическую высоту. Ячейка должна отрегулировать свою высоту в соответствии с высотой метки. Вот что я пытался без успеха:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if indexPath.section == 0 {
      return 44
    } else if indexPath.section == 1 {
      return UITableViewAutomaticDimension
    } else if indexPath.section == 2 {
      return 80
    } else {
      return 50
    }
}

Высоты всех секций установлены правильно, кроме автоматических размеров. Любая помощь?

2 ответа

Решение

Установить эту строку в viewDidLoad()

tableView.rowHeight = UITableViewAutomaticDimension

тогда напиши это table view метод

 func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
    {
        return UITableViewAutomaticDimension
    }

также убедитесь, что вы использовали auto layout должным образом. и вы установили number of lines for lable = 0

Вам также необходимо указать приблизительную высоту строки. Вы можете сделать это с помощью estimatedRowHeight собственность вашего UITableViewили реализуя соответствующий метод делегата:

func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return XXXXX // Provide your estimation here, or pass UITableViewAutomaticDimension (not the best for performances)
}

Ссылка: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithSelf-SizingTableViewCells.html

Другие вопросы по тегам