Reputation: 45
I am using the following code to populate the headers of my function:
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
switch section {
case 0: "SECTION 0"
case 1: "SECTION 1"
default: break
}
return nil
}
func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
{
var title = UILabel()
title.font = UIFont(name: "HelveticaNeue-Light", size: 12)!
title.textColor = UIColor.blackColor()
let header = view as! UITableViewHeaderFooterView
header.textLabel?.font=title.font
header.textLabel?.textColor=title.textColor
header.backgroundView?.backgroundColor = UIColor.whiteColor()
}
Now, I would like to be able to change the vertical alignment of the title in the section, like in the following picture:
Changing the vertical alignment of the title in the section of the TableView
How can I do that?
Upvotes: 3
Views: 4633
Reputation: 501
I would suggest to add a footer if you want to drop your label a little bit down.
Upvotes: 0
Reputation: 137
This code will vertical align the label, not sure its a great approach but sure works. you would rather create a view and use viewForHeaderSection.
guard let header = view as? UITableViewHeaderFooterView else { return }
header.translatesAutoresizingMaskIntoConstraints = false
header.textLabel?.translatesAutoresizingMaskIntoConstraints = false
header.textLabel?.centerYAnchor.constraint(equalTo: header.contentView.centerYAnchor).isActive = true
Upvotes: -1
Reputation: 791
Unfortunately there is no way to vertically align the text in a UILabel. This SO post goes into more detail.
But you can accomplish a similar affect by adding the label to a parent UIView, and constraining it to the bottom. Then you can return that view in the viewForHeaderInSection
tableview Data-source method
let headerView = UILabel(frame: CGRect(origin: CGPointZero, size: CGSize(width: self.view.frame.width, height: 50)))
let label = UILabel(frame: CGRect(x: 0, y: 20, width: self.view.frame.width, height: 30))
label.text = "Some Text"
headerView.addSubview(label)
return headerView
Upvotes: 8