uitableviewcontroller uitableviewcell example ios swift uitableview

ios - example - Autolayout se ignora en UITableViewCell personalizado



uitableviewcell swift (2)

A pesar de haber establecido restricciones para todos los elementos, incluidos los verticales necesarios para que la celda calcule su altura, el diseño automático parece ignorarse: todas las celdas están comprimidas.

Aquí hay una captura de pantalla del resultado y de las restricciones en el guión gráfico.

En el VC que contiene el tableView, aquí está el código en viewDidLoad:

tableView.estimatedRowHeight = 120.0 tableView.rowHeight = UITableViewAutomaticDimension

Al comentar la segunda línea, las celdas tienen una altura de 120.0, pero también se ignora Autolayout.

Gracias

Actualizar

Para simplificar la interfaz, he dejado una sola etiqueta con, como restricciones:

  • Espacio líder para la supervista
  • Espacio superior para supervisar
  • Ancho y alto fijos (100 y 100)
  • Espacio inferior al margen del contenedor para asegurarse de que la celda tenga todas las restricciones verticales para determinar su altura

Y con esta interfaz simplificada, el diseño automático todavía no se tiene en cuenta, lo que me insinúa que el problema no vino de restricciones mal establecidas.

En el Inspector de tamaño, la altura de la fila se establece en 120 y se selecciona Personalizado. La celda tiene la clase personalizada correcta, el identificador de reutilización de celda es correcto.

Actualización: solución encontrada

Este fue un simple error, vea mi respuesta a continuación.


Creo que el problema es que estás implementando:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return x }

Debe eliminar esta función para que la vista de tabla calcule su altura automática para las celdas.


El diseño automático se ignoró porque tanto la celda prototipo Y la vista UIView de la celda habían recibido la clase de celda personalizada en IB.

Establecer el UIView de nuevo a la clase UIView resolvió el problema.