I would like to change the font type and font size of a section header in a table view controller.
My code:
func tableView(tableView: UITableView, willDi
I found the easiest way is to do the following in your View Controller or Table View Controller.
func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
let header = view as! UITableViewHeaderFooterView
header.textLabel?.font = UIFont(name: "FontName", size: 14)
}
func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
{
let header = view as! UITableViewHeaderFooterView
header.textLabel?.font = UIFont(name: "Futura", size: 11)
header.textLabel?.textColor = UIColor.lightGrayColor()
}
Updated for Xcode 11, Swift 5
The top voted answers didn't work for me, here's what did:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
/// Create the view.
let headerView = UIView()
headerView.backgroundColor = .clear
/// Create the label that goes inside the view.
let headerLabel = UILabel(frame: CGRect(x: 30, y: 0, width: tableView.bounds.size.width, height: 30))
headerLabel.font = UIFont(name: "myFont", size: 12)
headerLabel.textColor = .white
headerLabel.text = "myHeaderName"
headerLabel.sizeToFit()
/// Add label to the view.
headerView.addSubview(headerLabel)
/// Return view.
return headerView
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
/// Return the same height as the height of the label in your header view.
return 30
}
Simple working solution: (Swift 2.0)
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
//Create label and autoresize it
let headerLabel = UILabel(frame: CGRectMake(0, 0, tableView.frame.width, 2000))
headerLabel.font = UIFont(name: "Avenir-Light", size: 30)
headerLabel.text = self.tableView(self.tableView, titleForHeaderInSection: section)
headerLabel.sizeToFit()
//Adding Label to existing headerView
let headerView = UIView()
headerView.addSubview(headerLabel)
return headerView
}
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
{
let header = view as! UITableViewHeaderFooterView
header.textLabel?.font = UIFont(name: "Futura", size: 38)!
header.textLabel?.textColor = UIColor.lightGrayColor()
}