UITableView dinámico con imágenes

Hay preguntas similares, pero ninguna de las respuestas funcionó para mí. En una tabla dinámica, quiero mostrar imágenes que tengan una altura diferente. Cada celda tiene unUIImageView concontentMode = .scaleAspectFit entonces la imagen toma muy bien el ancho de la tabla y toma la altura tanto como sea necesario.

La celda tiene 4 restricciones:

Controlador de vista de tabla:

class TableTableViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.estimatedRowHeight = 100
        tableView.rowHeight = UITableViewAutomaticDimension
    }

    override func numberOfSections(in tableView: UITableView) -> Int {

        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return 2
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ImageTableViewCell.self), for: indexPath) as! ImageTableViewCell

        let image = indexPath.row == 0 ? UIImage(named: "1.jpg")! : UIImage(named: "2.jpg")!
        cell.customImageView.image = image

        return cell
    }
}

Resultado:

Como puede ver, la altura de la celda es incorrecta (fondo rojo de la vista de imagen en la parte superior e inferior de la vista de imagen). Creo que esto sucede porqueintrinsicContentSize de la vista de la imagen es igual al tamaño de la imagen y es por eso que la altura de la celda se calcula incorrectamente (el modo de contenido no se tiene en cuenta). Intenté calcular la altura de la imagen y agregar restricciones de altura para la vista de la imagen:

cell.heightConstraint.constant = cell.frame.width * image.size.height /  image.size.width

pero rompe las restricciones de vista de contenido de la celda.

El proyecto se puede descargar.aquí >>

Respuestas a la pregunta(1)

Su respuesta a la pregunta