做到这一点的另一种方法是响应该UITableViewDelegate
方法willDisplayHeaderView
。传递的视图实际上是的实例UITableViewHeaderFooterView
。
下面的示例更改字体,并使标题文本在单元格中垂直和水平居中。请注意,您还应该响应heightForHeaderInSection
在表格视图的布局中考虑到标题高度的任何更改。(也就是说,如果您决定用此willDisplayHeaderView
方法更改标题高度。)
然后,您可以响应该titleForHeaderInSection
方法,以将此配置的标头与不同的节标题一起重用。
目标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;
}
斯威夫特1.2
(注意:如果您的视图控制器是a的后代,则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
}
斯威夫特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
}