UITableView - change section header color UITableView - change section header color ios ios

UITableView - change section header color


This is an old question, but I think the answer needs to be updated.

This method does not involve defining and creating your own custom view.In iOS 6 and up, you can easily change the background color and the text color by defining the

-(void)tableView:(UITableView *)tableView     willDisplayHeaderView:(UIView *)view     forSection:(NSInteger)section

section delegate method

For example:

- (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];}

Taken from my post here:https://happyteamlabs.com/blog/ios-how-to-customize-table-view-header-and-footer-colors/

Swift 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}


Hopefully this method from the UITableViewDelegate protocol will get you started:

Objective-C:

- (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;}

Swift:

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}

Updated 2017:

Swift 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    }

Replace [UIColor redColor] with whichever UIColor you would like. You may also wish to adjust the dimensions of headerView.


Here's how to change the text color.

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];