UILabel sizeToFit solo funciona con AutoLayout apagado

Así que estoy haciendo una aplicación con iOS 6 y me preguntaba por qué mi código que solía funcionar bien en iOS 5 ya no funciona. Tengo una celda con UILabel dinámica que se ajusta según el text que lleva.

Esto es con la activación automática activada:

introduzca la descripción de la imagen aquí

Esto es con la desconnection automática apagada:

introduzca la descripción de la imagen aquí

Aquí está mi código:

- (CGFloat)heightForText:(NSString *)bodyText { #define FONT_SIZE 13.0f #define CELL_CONTENT_WIDTH 280.0f #define CELL_CONTENT_MARGIN 5.0f CGSize constraintSize = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f); CGSize labelSize = [bodyText sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping]; CGFloat height = MAX(labelSize.height, 36.0f); // NSLog(@"height=%f", height); return height + (CELL_CONTENT_MARGIN * 2); } - (CGFloat)tableView:(UITableView *)tv heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger section = [indexPath section]; switch (section) { case 0: if ([self.text.text length]!=0) { return [self heightForText:self.text.text]; } else if ([self.link.text length]!=0) { return 60.0f; } } 

El código que ha mostrado está bien, es probable que el problema esté dentro de las restricciones que tiene en la label dentro de su celda (que no muestra).

Su label debe tener restricciones para que sea una distancia fija desde cada borde de su supervisión. Este puede ser el caso, si es así, el problema es ahora que la label no sabe cómo envolver sus líneas, también debe configurar el prefernetworkingMaxLayoutWidth en la label.

He descubierto que herramientas como DCIntrospect son realmente útiles para depurar problemas de Autolayout. Por ejemplo, en esta situación, es difícil saber si esta es una label del tamaño correcto que no envuelve el text o si la label no es lo suficientemente alta como para mostrar su contenido correctamente.