Cómo crear celdas estáticas con alturas de celda dinámicas con Swift

He visto varios tutoriales que muestran cómo establecer alturas de celda dinámicas, pero todos ellos solo lo muestran si está usando celdas dinámicas estableciendo las restricciones apropiadas y usandoUITableViewAutomaticDimension. Sin embargo, me gustaría hacer esto para las celdas estáticas.

Tengo un controlador de vista de tabla en mi aplicación que contiene varias celdas que muestran una categoría con un indicador de divulgación en el que hay un título y luego una descripción y el tamaño del texto de la descripción varía. Por lo tanto, me gustaría que la altura de la celda sea dinámica según el tamaño del texto descriptivo.

La razón por la que estoy usando celdas estáticas y no celdas dinámicas es porque sobre las celdas de categoría tengo algunas celdas con algunos diseños que solo pude obtener usando celdas estáticas y guiones gráficos.

estoy usandoiOS9, Xcode 7.3 ySwift 2.2

ACTUALIZAR

Código del controlador de vista de tabla

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
    }

}

ACTUALIZACIÓN 2

Por respuesta aceptada a continuación, agregué los dos métodos a continuación a mi controlador de vista de tabla y eliminé las 2 líneas que tenía en viewDidLoad (). ¡Esto lo hizo por mí! Tenga en cuenta que tenía que asegurarme de que todas las etiquetas en cada celda usaran una restricción superior, inferior, inicial y final. Además, el número de líneas para cada etiqueta debe establecerse en 0.

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

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

Respuestas a la pregunta(4)

Su respuesta a la pregunta