Ще один спосіб зробити це - відповісти на UITableViewDelegate
метод willDisplayHeaderView
. Переданий вид - це фактично екземпляр a UITableViewHeaderFooterView
.
Наведений нижче приклад змінює шрифт, а також центрирує текст заголовка вертикально та горизонтально всередині комірки. Зауважте, що ви також повинні відповісти, щоб heightForHeaderInSection
будь-які зміни у висоті заголовка були враховані в макеті подання таблиці. (Тобто, якщо ви вирішили змінити висоту заголовка в цьому willDisplayHeaderView
методі.)
Потім ви можете відповісти на titleForHeaderInSection
метод повторного використання цього налаштованого заголовка з різними заголовками розділів.
Ціль-С
- (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;
}
Швидкий 1.2
(Примітка: якщо ваш контролер подання є нащадком UITableViewController
, це потрібно буде оголосити як 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
Цей код також гарантує, що додаток не вийде з ладу, якщо подання заголовка є чимось іншим, ніж 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
}