24 votos

UITableViewCell, UITextView con la dinámica de altura

Necesito hacer una UITableViewCell que contiene una gran cantidad de texto. Sé que puedo agregar un UITextView a mi celular, pero cada entrada no tendrá la misma cantidad de texto.

Sé que puedo controlar la altura de la UITableViewCell con: -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath, pero eso no es realmente lo que estoy buscando.

Escenario 1:

 ---------------
| First Cell    |
 ---------------
 ---------------
| Second Cell   |
| with some     |
| text.         |
 ---------------
 ---------------
| Third Cell    |
 ---------------

Escenario 2:

 ---------------
| First Cell    |
 ---------------
 ---------------
| Second Cell   |
| with some     |
| more text and |
| an unknown    |
| cell height.  | 
 ---------------
 ---------------
| Third Cell    |
 ---------------

32voto

Anh Do Puntos 4677

Uso UILabel de tu celda de texto. Usted puede utilizar sizeWithFont:constrainedToSize: para calcular la altura de la que UILabel dentro de cada célula. Por ejemplo:

#define PADDING 10.0f

- (CGFloat)tableView:(UITableView *)t heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *text = [self.items objectAtIndex:indexPath.row];
    CGSize textSize = [text sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:CGSizeMake(self.tableView.frame.size.width - PADDING * 3, 1000.0f)];

    return textSize.height + PADDING * 3;
}

2voto

dennisreimann Puntos 431

Es bastante complicadas, como se trata de cosas como la contentInset de él en la vista texto que usted tendrá que tener en cuenta a la hora de calcular el tamaño de los textos. He escrito mis aprendizajes y la solución para el cálculo de la UITableViewCell altura sobre la base de un interior UITextView en mi blog. El post contiene el código que funciona para aplicaciones universales, tanto en la vista de tabla de estilos y autorotación.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X