Caja gris iOS 8 sobre UITableView

Estoy haciendo una aplicación donde necesito usar UITableView para mostrar contenido de manera organizada, pero desde que actualicé iOS 8 y Xcode 6 obtuve un cuadro gris misterioso en casi toda la vista. Esto se puede ver en la image a continuación. Esto no ocurre en todos UITableView , solo algunos (sin patrón aparente).

introduzca la descripción de la imagen aquí

En iOS 8 , debe especificar una altura en el delegado UITableView :

 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 44.0; } 

En iOS 7 y iOS 7 anteriores, se aceptó un valor pnetworkingeterminado. Vea este enlace para más información.

Este es definitivamente un error en XCode6-Beta2. Encontré una solución. Seleccione el guión gráfico y vaya a la utilidad Inspector de files. Desactive la opción "Usar Diseño Automático" y luego click "Deshabilitar Clases de Tamaño" en la window emergente.

El layout automático parece estar bastante roto en beta2. Una vez que desactivas las Clases de tamaño, las misteriosas advertencias de "contenido ambiguo desplazable" también desaparecerán.

Pude volver a activar las Clases de tamaño y el Diseño automático después, y el rectángulo gris todavía no está, pero todo está en el lugar equivocado después de perder la información de Clases de tamaño. Es un desastre.

Curiosamente, tiene que ver con el estilo de separador de vista de tabla. Si lo establece en Ninguno, el problema desaparecerá. Pero, por supuesto, ¡entonces no tienes separadores! Si desea utilizar separadores de línea única, debe especificar manualmente una altura de celda en -tableView:heightForRowAtIndexPath:

No tengo idea de por qué este es el caso, pero supongo que tiene algo que ver con las nuevas filas de tablas autodimensionadas. Es hora de hacer un poco de investigación 🙂

En iOS 8, la altura de la fila se puede configurar automáticamente para ti. Todo lo que tiene que hacer es establecer una restricción superior e inferior a la ContentView de UITableViewCell, así (observe las restricciones):

Constructor de interfaces: definición de la celda adecuada

Al hacer esto, la altura de la fila será automática y no necesitará establecer una altura fija. Esto corrige el color de background gris que has encontrado.

Recurso: http://www.shinobicontrols.com/blog/posts/2014/07/24/ios8-day-by-day-day-5-auto-sizing-table-view-cells