Como criar células estáticas com alturas dinâmicas de células com Swift
Analisei vários tutoriais que mostram como definir alturas de células dinâmicas, mas todos mostram apenas se você estiver usando células dinâmicas, definindo as restrições apropriadas e usandoUITableViewAutomaticDimension
. No entanto, eu gostaria de fazer isso para células estáticas.
Eu tenho um controlador de exibição de tabela no meu aplicativo que contém várias células que exibem uma categoria com um indicador de divulgação no qual existe um título e, em seguida, uma descrição e o tamanho do texto da descrição varia. Assim, eu gostaria que a altura da célula fosse dinâmica de acordo com o tamanho do texto da descrição.
A razão pela qual estou usando células estáticas e não células dinâmicas é porque, acima da categoria de células, tenho algumas células com alguns designs que só consegui usar usando células estáticas e storyboard.
estou usandoiOS9
, Xcode 7.3
eSwift 2.2
ATUALIZAR
Código do Controlador de Visualização de Tabela
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
}
}
ATUALIZAÇÃO 2
Por resposta aceita abaixo, adicionei os dois métodos abaixo ao meu controlador de exibição de tabela e removi as 2 linhas que eu tinha em viewDidLoad (). Isso fez por mim! Lembre-se de que eu precisava garantir que todos os rótulos em cada célula usassem uma restrição superior, inferior, inicial e final. Além disso, o número de linhas para cada rótulo deve ser definido como 0.
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}