Apesar de ter definido restrições para todos os elementos, incluindo as verticais necessárias para que a célula calcule sua altura, o layout automático parece ser ignorado: todas as células são comprimidas.
Aqui está uma captura de tela do resultado e das restrições no storyboard.
No VC que contém o tableView, aqui está o código em viewDidLoad:
tableView.estimatedRowHeight = 120.0
tableView.rowHeight = UITableViewAutomaticDimension
Comentar a segunda linha fornece células com altura de 120,0, mas o Autolayout também é ignorado.
obrigado
Atualizar
Para simplificar a interface, deixei um único rótulo com, como restrições:
- Espaço principal para superview
- Espaço superior para supervisualizar
- Largura e altura fixas (100 e 100)
- Espaço inferior até a margem do contêiner para garantir que a célula tenha todas as restrições verticais para determinar sua altura
E com essa interface simplificada, o layout automático ainda não é levado em consideração, o que me indica que o problema não veio de restrições mal definidas.
No Inspetor de tamanho, a altura da linha é definida em 120 e Personalizado está marcado. A célula tem a classe personalizada certa, o identificador de reutilização da célula está correto.
Atualização: solução encontrada
Este foi um erro simples, veja minha resposta abaixo.
fonte
Respostas:
O layout automático foi ignorado porque a célula de protótipo E o UIView da célula receberam a classe de célula personalizada em IB.
Definir o UIView de volta para a classe UIView resolveu o problema.
fonte
Content View
Alguém mais encontrou isso?Acho que o problema é que você está implementando:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return x }
Você precisa remover esta função para que o tableview calcule sua altura automática para as células.
fonte