La celda auto dimensionada con varias tags no muestra label multilínea

Tengo tres tags en mi celda de vista de tabla estática y la label del medio debería ser de varias líneas.

Estoy configurando estas dos líneas en viewDidLoad()

 self.tableView.estimatedRowHeight = 130.0 self.tableView.rowHeight = UITableViewAutomaticDimension 

El storyboard se parece a esto

introduzca la descripción de la imagen aquí

Aquí están las restricciones para cada subview.

Etiqueta superior, label media, label inferior, button

introduzca la descripción de la imagen aquí

También he establecido el número de líneas para la label del medio en 0. Sin embargo, solo muestra una sola línea, en lugar de varias líneas. Supongo que debe tener algo que ver con las prioridades de compression de contenido o aarm de contenido o es porque estoy usando un UITableViewController con celdas estáticas.

ACTUALIZAR

Si cambio la prioridad de resistencia de compression vertical de la label del medio a 751 y la prioridad de aarm de contenido vertical a 250, la label muestra multilíneas, pero la celda no cambia de tamaño, por lo que la label superior e inferior están fuera de la celda ahora.

ACTUALIZACIÓN 2

Acabo de crear un proyecto de ejemplo y resultó que funciona con celdas dinámicas como se esperaba, pero no con celdas estáticas. Puede download el proyecto de muestra aquí: https://dl.dropboxusercontent.com/u/67692950/ResizingCell.zip

Cloné tu proyecto de ejemplo. Creo que el problema es que no necesitas configurar la altura de UITableViewCell.

Esta es la única solución simple.

introduzca la descripción de la imagen aquí

· Para establecer el alto de fila "Pnetworkingeterminado" en la celda de vista de tabla. (No seleccionado personalizado)

En este caso, funciona.

Descargue el proyecto de ejemplo que implementé aquí: https://www.dropbox.com/s/w8q6ov9qjfxu1l3/ResizingCell.zip?dl=0

Pero al revés es que calcula la altura de UITableViewCell desde la altura de UILabel.

Si personaliza la celda de manera más complicada, es mejor aislar la celda como una celda personalizada.

En primer lugar, abrir el guión gráfico, establezca el alto de fila de la tabla de 100, desmarque la altura de fila personalizada para la celda de la tabla, cuyo valor es actualmente de 100.

En segundo lugar, como dijo @DBoyer, llame a layoutIfNeeded . Si ve "Incapaz de satisfacer simultáneamente las restricciones, intentará recuperarse rompiendo la restricción X", disminuya la prioridad de X a 999. Creo que las advertencias pueden tener algo que ver con eso cuando se obtiene la celda, el marco de celda es CGRectZero .

 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = super.tableView(tableView, cellForRowAtIndexPath: indexPath) cell.layoutIfNeeded() return cell } 

layoutIfNeeded llamar a layoutIfNeeded en la celda después de configurar el text de la label de layoutIfNeeded o establecer las tags prefernetworkingMaxLayoutWidth

Utilice la restricción aspectRatio para las tags. Su propósito es cambiar el ancho y la altura según la necesidad. Esto ayudará