Outra maneira de fazer isso seria responder ao UITableViewDelegate
método willDisplayHeaderView
. A visão passada é na verdade uma instância de a UITableViewHeaderFooterView
.
O exemplo abaixo altera a fonte e também centraliza o texto do título na vertical e na horizontal na célula. Observe que você também deve responder para heightForHeaderInSection
que as alterações na altura do cabeçalho sejam contabilizadas no layout da exibição da tabela. (Ou seja, se você decidir alterar a altura do cabeçalho neste willDisplayHeaderView
método.)
Você pode responder ao titleForHeaderInSection
método para reutilizar esse cabeçalho configurado com diferentes títulos de seção.
Objetivo-C
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
header.textLabel.textColor = [UIColor redColor];
header.textLabel.font = [UIFont boldSystemFontOfSize:18];
CGRect headerFrame = header.frame;
header.textLabel.frame = headerFrame;
header.textLabel.textAlignment = NSTextAlignmentCenter;
}
Swift 1.2
(Nota: se o seu controlador de exibição é descendente de a UITableViewController
, isso precisaria ser declarado como override func
.)
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
{
let header:UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
header.textLabel.textColor = UIColor.redColor()
header.textLabel.font = UIFont.boldSystemFontOfSize(18)
header.textLabel.frame = header.frame
header.textLabel.textAlignment = NSTextAlignment.Center
}
Swift 3.0
Esse código também garante que o aplicativo não trava se a visualização do cabeçalho for algo diferente de um UITableViewHeaderFooterView:
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
guard let header = view as? UITableViewHeaderFooterView else { return }
header.textLabel?.textColor = UIColor.red
header.textLabel?.font = UIFont.boldSystemFont(ofSize: 18)
header.textLabel?.frame = header.frame
header.textLabel?.textAlignment = .center
}