2010-07-19 9 views
5

Quiero mostrar un UIButton en un pie de página de UITableView (debe ser exactamente el mismo para el encabezado).UITableView tableFooterView cambio de tamaño extraño

Este código se encuentra en la viewDidLoad de mi TableViewController:

UIButton *footerShareButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[footerShareButton setFrame:CGRectMake(10, 0, 70, 50)]; 
NSLog(@"%f", footerShareButton.frame.size.width); 

[self.tableView setTableFooterView:footerShareButton]; 

NSLog(@"%f", footerShareButton.frame.size.width); 
NSLog(@"%f", self.tableView.tableFooterView.frame.size.width); 

Sin embargo, este código no funciona. El ancho del botón es demasiado grande, es 320. (Sin embargo, la altura es correcta). El primer NSLog da salida a 70, el segundo y el tercero a 320. Por lo tanto, parece que el método setTableFooterView extrañamente cambia el tamaño del botón.

He resuelto este problema poniendo el UIButton en otro UIView antes de establecerla como el pie de tabla:

UIButton *footerShareButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[footerShareButton setFrame:CGRectMake(10, 0, 70, 50)]; 

UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(10, 0, 70, 50)]; 
[aView addSubview:footerShareButton]; 

[self.tableView setTableFooterView:aView]; 
[aView release]; 

Esto funciona, el botón tiene la anchura correcta.

Sin embargo, no entiendo por qué la primera muestra de código no funciona. ¿Alguien puede explicar?

Respuesta

19

Independientemente del ancho que establezca en la vista que está agregando como un pie de página UITableView - su ancho siempre será el mismo que el ancho de la tabla.

Por lo tanto, en su caso, la vista que ha agregado se redimensiona a CGRectMake(0, 0, 320, 50), pero el botón permanece con el marco correcto. marco de Button es de acuerdo a la vista ...

EDITAR:
El único parámetro en el marco del pie/de cabecera que sigue siendo el que establezca es la altura.

Observe que si cambia la altura de la vista de encabezado/pie de página después de que se agrega a la tabla no hará ningún cambio. Debe establecer la altura antes de agregarla a la tabla ...

+2

Sí, eso es todo, lo hace cambiar el tamaño de la vista creé así, simplemente no me di cuenta. Gracias. Creo que debería mencionarse en los documentos que establecer la propiedad tableFooterView cambia el tamaño de la vista, eso me habría ahorrado algo de tiempo. – avf

3

De hecho, me encontré con una manera de solucionar este problema;

Cree una UIView 320x vacía (la altura de su botón) y luego coloque el botón centrado dentro de esta vista que contiene. De esta forma, el botón dentro de la vista no cambia de tamaño.

Espero que esto ayude,

Jonathan

Cuestiones relacionadas