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.
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 >>