¿Cómo fijo una multilínea UILabel que se desborda su UITableViewCell que contiene?
-
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 ...
Cualquier ayuda aquí sería muy apreciada.
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.