Un altro modo per farlo sarebbe rispondere al UITableViewDelegate
metodo willDisplayHeaderView
. La vista passata è in realtà un'istanza di a UITableViewHeaderFooterView
.
L'esempio seguente modifica il carattere e centra anche il testo del titolo verticalmente e orizzontalmente all'interno della cella. Tieni presente che dovresti anche rispondere per heightForHeaderInSection
fare in modo che eventuali modifiche all'altezza della testata siano prese in considerazione nel layout della vista tabella. (Cioè, se si decide di modificare l'altezza dell'intestazione in questo willDisplayHeaderView
metodo.)
È quindi possibile rispondere al titleForHeaderInSection
metodo per riutilizzare questa intestazione configurata con titoli di sezione diversi.
Objective-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 il controller della vista è un discendente di a UITableViewController
, questo dovrebbe essere dichiarato come 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
Questo codice garantisce inoltre che l'app non si arresti in modo anomalo se la visualizzazione dell'intestazione è diversa da 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
}