Я рассмотрел несколько руководств, в которых показано, как устанавливать динамические высоты ячеек, но все они показывают это только в том случае, если вы используете динамические ячейки, установив соответствующие ограничения и используя UITableViewAutomaticDimension
, Тем не менее, я хотел бы сделать это для статических ячеек.Как создать статические ячейки с динамическими высотами ячеек с помощью Swift
У меня есть контроллер табличного представления в моем приложении, который содержит несколько ячеек, которые отображают категорию с индикатором раскрытия, в котором есть заголовок, а затем описание и размер текста описания различаются. Таким образом, я хотел бы, чтобы высота ячейки была динамической по размеру текста описания.
Причина, по которой я использую статические ячейки, а не динамические ячейки, потому что над ячейками категории у меня есть несколько ячеек с некоторыми конструкциями, которые я мог бы получить только с помощью статических ячеек и раскадровки.
Я использую iOS9
, Xcode 7.3
и Swift 2.2
UPDATE
Table View Controller Code
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 Incomplete implementation, return the number of rows
return 2
}
}
UPDATE 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
}
Я не использую текстовое представление. Я использую обычные метки для своего текста. – Jace
Однако добавление двух методов устранило мою проблему. Теперь ячейки изменяются в зависимости от размера текста метки. Благодаря! – Jace
oh okay.Welcome friend :) Сделайте компилятор счастливым! –