2012-03-22 50 views
8

La altura predeterminada es demasiado grande para mí. ¿Cómo puedo cambiar la altura entre dos secciones?¿Cómo cambiar la altura ENTRE las secciones en UITableView AGRUPADO?

============================================== ==============================

Lo siento por mi pobre inglés ... Me refiero a la brecha entre dos secciones Es demasiado largo. Cómo cambiarlo?

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    CGRect frame = CGRectMake(0, 0, tableView.frame.size.width, 2.0f); 
    UIView *view = [[[UIView alloc] initWithFrame:frame] autorelease]; 
    view.backgroundColor = [UIColor blueColor]; 
    return view; 
} 

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 
{ 
    CGRect frame = CGRectMake(0, 0, tableView.frame.size.width, 2.0f); 
    UIView *view = [[[UIView alloc] initWithFrame:frame] autorelease]; 
    view.backgroundColor = [UIColor redColor]; 
    return view; 
} 

Cambié la vista de encabezado y pie de página de cada sección. Y aquí está el resultado: enter image description here

Creo que puede haber una altura min de la brecha, porque me puse la altura de la cabecera y el pie de 2px, pero la distancia entre dos secciones sigue siendo tan grande.

+0

Su pregunta no está nada clara, ¿quiere decir que la brecha entre dos secciones es más pequeña, o cambia la altura de una sección mientras que la otra sección sigue siendo del mismo tamaño? –

+0

Lo siento por mi pobre inglés. Me refiero a la brecha entre dos secciones. –

Respuesta

14

Puede usar vistas de pie de página entre cada una de sus secciones y darles el tamaño del espacio que desee mediante la implementación de los siguientes métodos en el delegado de UITableView.

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section

En el primer método delegado se puede volver un simple ejemplo UIView, y en el segundo se puede devolver la altura que este punto de vista debe ser. Este segundo método delegado debería permitirle controlar la brecha entre secciones.

+1

Sí, creo que hay una distancia mínima. Gracias :) –

+1

La propiedad tableFooterView no hace referencia a las vistas de pie de página entre secciones. –

+0

Eso es verdad. TableFooterView es una vista que se encuentra en la parte inferior de UITableView. El delegado puede proporcionar las vistas del pie de página para cada sección utilizando el método '- (UIView *) tableView: (UITableView *) tableView viewForFooterInSection: (NSInteger) section'. He actualizado por respuesta con esta corrección. Gracias. –

4

probar este código

self.tableView.rowHeight = 0; // in viewdidload 
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; // in viewdidload 

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 
{ 
    return 0.01f; 
} 

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ 
    return <your header height>; 
} 

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ 
    return [[UIView alloc] initWithFrame:CGRectZero]; 
} 

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ 
    return <your header view>; 
} 

y la versión Swift es

func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 
    return your footer view 
} 

func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { 

    return your footer view height 
} 

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
    return 0.01 
} 

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    return UIView.init(frame: CGRect.zero) 
} 
0

Es necesario utilizar el método heightForHeaderInSection para definir el espacio entre el encabezado & texto de la celda. También puede cambiarlo dependiendo de las diferentes secciones para, p. Ej. en algunas secciones puede necesitar mostrar más distancia & debajo de algunas, no desea mostrar la brecha. Para tal caso se puede usar

CGFLOAT_MIN que es 0.000001f

. dándole un ejemplo, cómo se puede utilizar la sección diferente con diferentes alturas de cabecera

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    if (section == 0 || section == 2) 
    { 
     return 55.0; 
    } 
    else 
    { 
     return CGFLOAT_MIN; 
    } 
} 

espero que le ayudará.

Cuestiones relacionadas