¿Cómo fijo una multilínea UILabel que se desborda su UITableViewCell que contiene?

StackOverflow https://stackoverflow.com/questions/984362

  •  13-09-2019
  •  | 
  •  

Pregunta

Estoy teniendo problemas para mostrar una multilínea UILabel en una celda UITableView personalizado.

Actualmente estoy usando esto para calcular tanto la altura de la celda ...

NSString *cellText = [howtoSection objectAtIndex:row];
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:15.0];
CGSize constraintSize = CGSizeMake(260.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

return labelSize.height + 20;

... y esto es para la propia etiqueta.

// Calc the height
NSString *cellText = [howtoSection objectAtIndex:row];
CGSize constraintSize = CGSizeMake(260.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cell.textLabel.font constrainedToSize:constraintSize lineBreakMode:cell.textLabel.lineBreakMode];

// Create the label frame
CGRect newFrame = cell.contentLabel.frame;
newFrame.size.height = labelSize.height;
cell.contentLabel.frame = newFrame;

[cell.contentLabel setText:[howtoSection objectAtIndex:row]];

Todo está funcionando como estaba previsto, salvo que la etiqueta está siendo empujado hacia abajo y fuera de su celda. Si no fuera por esta aparente margen de todo lo arriba encajaría.

Aquí hay un enlace a una imagen de lo que estoy viendo en el simulador ...

iPhone representación Bug

Cualquier ayuda aquí sería muy apreciada.

¿Fue útil?

Solución

No veo que el establecimiento cell.contentLabel.font en el código mostrar.

También el cálculo del tamaño de la etiqueta utiliza cell.textLabel.font para calcular su tamaño, sino que hace uso de la variable contentLabel.

¿Es posible que estés haciendo con una fuente diferente que el cálculo?

Otros consejos

¿Cómo se agrega la etiqueta a la contentView? Parece que el posicionamiento original es incorrecto, ya que la altura parece estar calculado correctamente. Si usted comenta a cabo la asignación de la nueva trama, es la etiqueta en la posición correcta? Mi apuesta es que no lo es.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top