Cuando establecí rowHeight para UITableView, ¿no debería cambiar también la altura de la celda?

Pregunta:
Cuando establecí rowHeight para UITableView , ¿no debería cambiar también la altura de la celda?
Esta es la situación que me lleva a pensar en ello:


Quiero establecer una línea separada para cada celda de vista de tabla en la parte inferior, lo que es más, quiero establecer la altura de la fila de 44 a 32 . El resultado que quiero es como a continuación:

La configuration de la altura de la fila se realiza correctamente:

 - (void)viewDidLoad { [super viewDidLoad]; [self.tableView setRowHeight:32.0f]; [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; //... } // Even use the delegate of UITableView - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 32.0f; } 

Sin embargo, cuando estaba agregando una línea separada para celda, encontré un problema: quiero establecer la línea separada en la parte inferior de la celda, así que establezco la position y por cell.frame.size.height - 1.0f . Desafortunadamente, el resultado se muestra a continuación:

Cuando seleccioné, la celda cambió como a continuación:

1. Fila seleccionada No.1:

2. Fila seleccionada No.2:

3. Fila seleccionada n ° 3:

Parece que la altura de la celda antes seleccionada fue 44 , cuando se seleccionó, se cambió a 32 . Se superponían uno por uno como cartas, ¿verdad? ¡Extraño!

El código principal:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease]; [cell.textLabel setFont:[UIFont fontWithName:@"Futura-Medium" size:15.0f]]; UIView * seperateLine = [[UIView alloc] initWithFrame:CGRectMake(10.0f, cell.frame.size.height - 1.0f, 300.0f, 1.0f)]; NSLog(@">>>>>>>>>>>>>>>> %f", cell.frame.size.height); [seperateLine setBackgroundColor:[UIColor grayColor]]; [cell.contentView addSubview:seperateLine]; [seperateLine release]; } //... } 

Traté de verificar cell.frame.size.height , y finalmente tenía 44 . Y luego, reemploop la línea

 UIView * seperateLine = [[UIView alloc] initWithFrame:CGRectMake(10.0f, cell.frame.size.height - 1.0f, 300.0f, 1.0f)]; 

a

 UIView * seperateLine = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 31.0f, 300.0f, 1.0f)]; 

Funcionó como la primera image que se muestra arriba. Pero the cell's height was still 44 , ellos (que simplemente no podemos ver totalmente) todavía se superponían. Lo que hice fue agregar una separate line donde y position es 32 pero su altura total es 44 .


Entonces, ¿qué piensas de esto? 😕

Problema:

Según la HIG de Apple, el área tapizable pnetworkingeterminada es 44, por lo que, por defecto, todo el control tiene 44 alturas.

usted define nuevo UITableViewCell dentro

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

que es por defecto 44 y no cambia nada en el marco de UITableViewCell y lo devuelve.

Solución:

intente configurar el tamaño de ttwig de UITableViewCell es decir, cell.frame = CGRectMake(0.0f, 0.0f, 320.0f, 32.0f)

Consulte la documentation y busque tableView:heightForRowAtIndexPath: delegate method. Utilizando el que puede establecer la altura para cada fila. Se puede arreglar o puede ser dynamic, así como por su requerimiento.

Espero eso ayude.