¿Cambio de altura de UITableViewCell después de desplazarse hacia arriba?

Actualmente, al desplazarme hacia arriba en mi tablaView, he encontrado un error extraño y molesto. Cuando decido liberar el "desplazamiento", lo que significa que estoy soltando "el desplazamiento" para que la "Vista" vuelva a su position normal mostrando todo el contenido de TableView, algunos de los de mi celda pueden, por alguna razón, networkingimensionarse en el anchura. No tengo idea de por qué ocurre esto o cuál podría ser el problema.

My cell's (commentLabel) están personalizados para fitSize dependiendo de la altura de la label en mi foro. Supongo que el problema puede estar en cómo trato de personalizar el contenido de mi celular. Publicaré mi código relevante y también publicaré en las imágenes a continuación.

Antes de comenzar a arrastrar el desplazamiento hacia arriba: http://tinypic.com/view.php?pic=2rfsum9&s=6

Después de soltar / soltó el desplazamiento nuevamente a su position normal. Ahora, una de las celdas ha cambiado: http://tinypic.com/view.php?pic=swxnqv&s=6

Código:

- (UITableViewCell *)tableView:(UITableView *)pTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"ForumthreadCell"; UITableViewCell *cell = [pTableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } Feedback *item = [self.items objectAtIndex:indexPath.row]; UILabel *aliasLabel = (UILabel *)[cell viewWithTag:1]; UILabel *commentLabel = (UILabel *)[cell viewWithTag:2]; UILabel *dateLabel = (UILabel *)[cell viewWithTag:3]; [aliasLabel setText:item.alias]; [commentLabel setText:item.comment]; [dateLabel setText:[self.dateFormatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:(double)item.time]]]; commentLabel.numberOfLines = 0; [commentLabel sizeToFit]; return cell; } -(CGFloat)getLabelHeightForText:(NSString *)text andWidth:(CGFloat)labelWidth { CGSize maximumSize = CGSizeMake(labelWidth, 10000); //provide appropriate font and font size CGSize labelHeighSize = [text sizeWithFont: [UIFont fontWithName:@"Trebuchet MS" size:12.0f] constrainedToSize:maximumSize lineBreakMode:UILineBreakModeTailTruncation]; return labelHeighSize.height; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { Feedback *item = [self.items objectAtIndex:indexPath.row]; CGFloat commentTextHeight = [self getLabelHeightForText:item.comment andWidth:162]; return commentTextHeight + 39; } 

EDITAR

El nuevo código:

 CGRect frame = commentLabel.frame; frame.size.width = kLabelWidth; frame.size.height = 10000; commentLabel.frame = frame; frame = commentLabel.frame; frame.size.height += kOffset; commentLabel.frame = frame; 

Pero he hecho algo mal porque ahora el text de commentLabel no se muestra correctamente, ¿alguien puede que sepa mi falla aquí en cómo bash establecer el marco? Esto es cómo se ve la celda ahora http://oi50.tinypic.com/2w5u0s6.jpg

El nuevo código completo:

 static const CGFloat kLabelWidth = 162; static const CGFloat kOffset = 39; - (UITableViewCell *)tableView:(UITableView *)pTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"ForumthreadCell"; UITableViewCell *cell = [pTableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } Feedback *item = [self.items objectAtIndex:indexPath.row]; UILabel *aliasLabel = (UILabel *)[cell viewWithTag:1]; UILabel *commentLabel = (UILabel *)[cell viewWithTag:2]; UILabel *dateLabel = (UILabel *)[cell viewWithTag:3]; [aliasLabel setText:item.alias]; [commentLabel setText:item.comment]; [dateLabel setText:[self.dateFormatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:(double)item.time]]]; CGRect frame = commentLabel.frame; frame.size.width = kLabelWidth; frame.size.height = 10000; commentLabel.frame = frame; frame = commentLabel.frame; frame.size.height += kOffset; commentLabel.frame = frame; commentLabel.numberOfLines = 0; [commentLabel sizeToFit]; return cell; } 

Debe ajustar los frameworks de label antes de volver a usar las celdas. En tu caso, estás cambiando la altura de las celdas mientras la reutilizas en

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

pero también debe ajustar el marco de la label de acuerdo con la altura de la celda para que no vaya más allá del límite de la celda.