Autolayout ignora detailTextLabel de varias líneas al calcular la altura UITableViewCell (todos los estilos)

Así que estoy tratando de usar los estilos integrados UITableViewCell, específicamente UITableViewCellStyleSubtitle, con una línea (única)textLabel peromultilínea detailTextLabel. Pero la altura de celda calculada (auto) es consistentemente demasiado corta y parece ignorar que hay más de 1 línea de detalle.

He intentado usar numberOfLines = 0, estimadoRowHeight, UITableViewAutomaticDimension, preferredMaxWidthLayout, etc., pero en todas las permutaciones el comportamiento, de hecho paratodas los estilos UITableViewCell: parece que el cálculo de altura de celda UITableViewAutomaticDimension tendrá en cuenta correctamente una línea múltipletextLabel (¡sí!), pero asume incorrectamente eldetailTextlabel es como máximo una sola línea (¡no!). En consecuencia, las celdas con un detalle multilínea detailTextLabel son demasiado cortas y, por lo tanto, el contenido de la celda se derrama sobre la parte superior e inferior de la celda.

He publicado una aplicación de prueba rápida que muestra este comportamiento en GitHubaquí. Agregar líneas de texto adicionales está bien, todos los estilos de celda aumentan apropiadamente en altura para acomodarse, pero agregar líneas de detalle adicionales no hace nada para cambiar la altura de la celda y rápidamente hace que el contenido se desborde; el texto + detalle se presentan correctamente, y juntos se centran correctamente sobre el centro de la celda (por lo que, en ese sentido, layoutSubviews funciona correctamente), pero la altura general de la celda en sí no cambia.

Casi parece que no hay restricciones superiores e inferiores reales entre cell.contentView y las etiquetas, y en su lugar, la altura de la celda se calcula directamente a partir de la altura de textLabel (posiblemente de varias líneas) y (solo una línea) detailTextLabel , y luego todo se centra en el centro de la celda ... Nuevamente, textLabel multilínea está bien, y no estoy haciendo nada diferente entre textLabel y detailTextLabel, pero solo el primero ajusta (correctamente) la altura de la celda.

Entonces mi pregunta es, si es posible usar los estilos UITableViewCell incorporados para mostrar de manera confiablemultilínea detailTextLabels, o simplemente no es posible y necesita crear una subclase personalizada en su lugar? [o, casi de manera equivalente, sin tener que anular layoutSubviews en una subclase y volver a cablear todas las restricciones manualmente].

[4 de mayo de 2016] Conclusión: a partir de iOS9, las líneas múltiples detailTextLabels no funcionan como se esperaba con UITableViewAutomaticDimension; la celda será demasiado corta y el texto / detalle se extenderá por la parte superior e inferior. Debe calcular manualmente la altura correcta de la celda, o crear y diseñar su propia subclase UITableViewCell personalizada equivalente, o (vea mi respuesta a continuación) la subclase UITableViewCell y corregirsystemLayoutSizeFittingSize:withHorizontalFittingPriority:verticalFittingPriority: para devolver la altura correcta [recomendado]

Respuestas a la pregunta(4)

Su respuesta a la pregunta