Как создать статические ячейки с динамической высотой ячеек с помощью Swift
Я посмотрел несколько уроков, которые показывают, как установить динамическую высоту ячеек, но все они показывают это, только если вы используете динамические ячейки, устанавливая соответствующие ограничения и используяUITableViewAutomaticDimension
, Тем не менее, я хотел бы сделать это для статических ячеек.
В моем приложении есть контроллер табличного представления, который содержит несколько ячеек, в которых отображается категория с индикатором раскрытия, в котором есть заголовок, а затем описание и размер текста описания. Таким образом, я хотел бы, чтобы высота ячейки была динамической в соответствии с размером текста описания.
Причина, по которой я использую статические ячейки, а не динамические ячейки, заключается в том, что над ячейками категорий у меня есть несколько ячеек с некоторыми дизайнами, которые я мог бы получить только с помощью статических ячеек и раскадровки.
я используюiOS9
, Xcode 7.3
а такжеSwift 2.2
ОБНОВИТЬ
Код контроллера табличного представления
import UIKit
class CategoriesTableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 140
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplet,e implementation, return the number of rows
return 2
}
}
ОБНОВЛЕНИЕ 2
В соответствии с принятым ответом ниже, я добавил два метода ниже в мой контроллер табличного представления и удалил 2 строки, которые у меня были в viewDidLoad (). Это сделало это для меня! Имейте в виду, что мне нужно было убедиться, что все метки в каждой ячейке использовали ограничение сверху, снизу, впереди и сзади. Кроме того, количество строк для каждой метки должно быть установлено на 0.
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}