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
}

questionAnswers(4)

yourAnswerToTheQuestion