Hacer UITableViewCell expanda cuando el texto supera el espacio
-
22-09-2019 - |
Pregunta
Tengo un UITableViewCell
y es UITableViewCellStyleDefault
. Cuando trato de poner el texto más largo que el UITableViewCell
, se trunca. ¿Cómo hago la célula ampliar para dar cabida a este texto?
Solución
No se puede ampliar el ancho de celda más de la pantalla del iPhone ... Lo que puede hacer es 1> realice una fuente más pequeña 2> realiza los múltiples líneas de texto
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
CGRect contentRect = CGRectMake(80.0, 0.0, 240, 40);
UILabel *textView = [[UILabel alloc] initWithFrame:contentRect];
textView.text = mytext;
textView.numberOfLines = 2;
textView.textColor = [UIColor grayColor];
textView.font = [UIFont systemFontOfSize:12];
[cell.contentView addSubview:textView];
[textView release];
Otros consejos
No he tratado de hacer exactamente lo que estamos tratando de hacer, pero probablemente algo parecido a esto:
Tiene que cambiar el tamaño de una vista en función de la longitud de la cadena de texto en su interior.
La vista de tabla delegado (el controlador de vista) debe implementar
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
Message *msg = (Message *)[messages objectAtIndex:indexPath.row];
CGSize size = [[msg text] sizeWithFont:[UIFont fontWithName:@"Helvetica" size:kLabelFontSize]
constrainedToSize:CGSizeMake(220.0f, 480.0f)
lineBreakMode:UILineBreakModeTailTruncation];
CGFloat minHeight = 20.0f;
CGFloat height = size.height > minHeight ? size.height : minHeight;
return height;
}
que le dice a la vista la altura para hacer de cada fila.
Vamos a necesitar a la necesidad de cambiar el tamaño del marco también de la etiqueta UITableViewCell de manera similar.
Creo que todas las células tienen que ser de la misma altura y anchura. Se puede cambiar la altura de la UITableViewCells
utilizando la propiedad tableView's rowHeight
.
Por ejemplo, si subclase UITableViewController
self.tableView.rowHeight = 100;
Otra opción es añadir un UILabel
personalizada como una vista secundaria de la contentView células como se ha mostrado anteriormente.