UITableView dinâmico com imagens

Existem perguntas semelhantes, mas nenhuma das respostas funcionou para mim. Em uma tabela dinâmica, quero exibir imagens com alturas diferentes. Cada célula tem umUIImageView comcontentMode = .scaleAspectFit para que a imagem tenha a largura da mesa e a altura necessárias.

A célula possui 4 restrições:

Controlador de exibição de tabela:

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 você pode ver, a altura da célula está incorreta (fundo vermelho da visualização da imagem na parte superior e inferior da visualização da imagem). Eu acredito que isso acontece porqueintrinsicContentSize da visualização da imagem é igual ao tamanho da imagem e é por isso que a altura da célula é calculada incorretamente (o modo de conteúdo não é levado em consideração). Tentei calcular a altura da imagem e adicionar restrição de altura para a visualização da imagem:

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

mas quebra as restrições de exibição de conteúdo da célula.

O projeto pode ser baixadoaqui >>

questionAnswers(1)

yourAnswerToTheQuestion