2010-03-05 24 views
9

tengo una pregunta bastante simple (espero que sí). ¿Cómo cambio el color del encabezado de sección en una vista UITable del azul predeterminado al negro transparente? Gracias de antemano.Cambiando el color del encabezado de sección en UITableview

+1

Aquí es una pregunta similar: http://stackoverflow.com/questions/813068/uitableview-change-section-header -color – nylund

Respuesta

18

que necesita para implementar este método en el protocolo UITableViewDelegate:

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

Aquí hay un enlace a la documentation

... y hacer algo como esto (sub en su propio color):

UIView *sectionView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 22)] autorelease]; 
[sectionView setBackgroundColor:[UIColor blackColor]]; 
return sectionView; 

También puede usar el entero de sección para colores alternativos o algo similar. Creo que la altura predeterminada para las secciones es 22, pero puedes hacer lo que quieras. ¿Es esto lo que quisiste decir con tu pregunta? Espero que esto ayude.

+0

Gracias, pensé que habría algún tipo de disparador en IB para cambiar al color negro. Pero de todos modos, gracias. –

+1

Pero, por favor, guarde esas vistas en caché. Hay un error en UIKit que hace que se soliciten vistas de encabezado cuando se está desplazando tableView, por lo que se llamará a este método para cada píxel-desplazamiento mientras se desplaza. 22px es de hecho la altura predeterminada. – Joost

+1

hola, comprendo que se llama a este método cuando se realiza el desplazamiento ... ¿cómo podemos almacenarlo en la memoria caché para guardar las vistas innecesarias que se crean, etc.? si pudiera publicar un comentario o una actualización de su publicación, será de gran ayuda. gracias – Pavan

0
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
    { 
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,tableView.bounds.size.width, 30)]; 
    if (section == 0) 
    [headerView setBackgroundColor:[UIColor redColor]]; 
    else 
    [headerView setBackgroundColor:[UIColor clearColor]]; 
    return headerView; 
    } 
20

Esta es una pregunta anterior, pero creo que la respuesta debe actualizarse.

Este método no implica la definición de sus propias vistas personalizadas.
En iOS 6 en adelante, puede cambiar fácilmente el color de fondo y el color del texto definiendo el

- (void)tableView:(UITableView *)tableView 
     willDisplayHeaderView:(UIView *)view 
     forSection:(NSInteger)section
método delegado.

Por ejemplo:

 
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section 
{ 
    // Background color 
    view.tintColor = [UIColor blackColor]; 

    // Text Color 
    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view; 
    [header.textLabel setTextColor:[UIColor whiteColor]]; 

    // Another way to set the background color 
    // Note: does not preserve gradient effect of original header 
    // header.contentView.backgroundColor = [UIColor blackColor]; 
} 

Tomado de mi post aquí: https://happyteamlabs.com/blog/ios-how-to-customize-table-view-header-and-footer-colors/

Cuestiones relacionadas