UITableView: cambiar el color del encabezado de la sección

Resuelto Ilya Suzdalnitski asked hace 54 años • 34 respuestas

¿Cómo puedo cambiar el color del encabezado de una sección en UITableView?

EDITAR : La respuesta proporcionada por DJ-S debe considerarse para iOS 6 y superior. La respuesta aceptada está desactualizada.

Ilya Suzdalnitski avatar Jan 01 '70 08:01 Ilya Suzdalnitski
Aceptado

Esta es una vieja pregunta, pero creo que es necesario actualizar la respuesta.

Este método no implica definir ni crear su propia vista personalizada. En iOS 6 y versiones posteriores, puedes 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 de delegado de sección

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 publicación aquí: https://happyteamlabs.com/blog/ios-how-to-customize-table-view-header-and-footer-colors/

Rápido 3/4

func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int){
    view.tintColor = UIColor.red
    let header = view as! UITableViewHeaderFooterView
    header.textLabel?.textColor = UIColor.white
}
Dj S avatar Oct 04 '2013 05:10 Dj S

Con suerte, este método del UITableViewDelegateprotocolo le ayudará a empezar:

C objetivo:

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

Rápido:

func tableView(_ tableView: UITableView!, viewForHeaderInSection section: Int) -> UIView!
{
  let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: 30))
  if (section == integerRepresentingYourSectionOfInterest) {
    headerView.backgroundColor = UIColor.redColor()
  } else {
    headerView.backgroundColor = UIColor.clearColor()
  }
  return headerView
}

Actualizado 2017:

Rápido 3:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
    {
        let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: 30))
        if (section == integerRepresentingYourSectionOfInterest) {
            headerView.backgroundColor = UIColor.red
        } else {
            headerView.backgroundColor = UIColor.clear
        }
        return headerView
    }

Reemplace [UIColor redColor]con el que UIColordesee. Es posible que también desee ajustar las dimensiones de headerView.

Alex Reynolds avatar May 01 '2009 20:05 Alex Reynolds

Aquí se explica cómo cambiar el color del texto.

UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(10, 3, tableView.bounds.size.width - 10, 18)] autorelease];
label.text = @"Section Header Text Here";
label.textColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.75];
label.backgroundColor = [UIColor clearColor];
[headerView addSubview:label];
DoctorG avatar Jan 18 '2010 01:01 DoctorG