2011-03-30 19 views
13

En mi UITableView, tengo un TableHeaderView que debe redimensionarse de acuerdo con el contenido. Sin embargo, el cambio de tamaño funciona bien, el tableHeaderView oscurece el primer par de celdas. Al parecer, cambiar el marco de la tabla HeaderView no reorganiza el resto de la vista.Cambiar la altura de una tablaHeaderView oculta las celdas

Ya he intentado llamar a [self.tableView layoutSubViews] y [self.tableView setNeedsLayout], pero eso tampoco ayuda. También traté de dar a tableHeaderView desde Interface Builder una salida para cambiar el frame en eso, pero eso no reorganiza el tableView tampoco.

¿Cómo puedo cambiar el tamaño de tableHeaderView, sin ocultar ninguna celda, reorganizando el resto de tableView?

+1

intente ingresar '[myView setClipsToBounds: YES];' en su 'viewForheaderInSection' then puede ver cuánto tamaño toma – Seega

Respuesta

4

No sé cómo creó su UITableView, pero traté de crear uno con tableHeaderView como usted y su redimensionamiento.

he creado una clase que hereda de UITableViewController

@interface MyTableViewController : UITableViewController { 

} 

@end 

y para la aplicación, en el viewDidLoad, añadí:

UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)]; 
[header setBackgroundColor:[UIColor redColor]]; 
self.tableView.tableHeaderView = header; 

enter image description here

+0

Creé el TableView a través de TableViewController con un archivo nib. Allí agregué una vista para tableHeaderView e inserté una etiqueta que contiene el contenido. Cambio el contenido y el marco de la etiqueta ajustando un IBOutlet. Pero al hacer lo mismo con tableHeaderView IBOutlet, no se reorganiza la tabla vista. – SpacyRicochet

+2

Al final, utilicé este método, sin crear la vista en Interface Builder. ¡Gracias! – SpacyRicochet

+0

¡Oye! ¿Por qué agrego las mismas líneas a viewDidLoad y no puedo ver el bloque rojo de arriba? –

22

intente configurar la propiedad tableHeaderView del UITableView después de cambiar el tamaño de su contenido.

[self.tableView setTableHeaderView:self.myResizedTableHeaderView]; 

Resolvió el problema para mí. Espero eso ayude.

+3

específicamente para mí, postergué el tamaño de las cosas hasta que ViewWillAppear: ya que mi controlador se instanciaba dinámicamente, y por lo tanto no tenía una geometría adecuada para referenciar hasta entonces. – qix

Cuestiones relacionadas