Skip to content

Instantly share code, notes, and snippets.

@luowei
Created October 17, 2016 03:57
Show Gist options
  • Save luowei/9f84e6b6aca64239f514ca8e6d39634b to your computer and use it in GitHub Desktop.
Save luowei/9f84e6b6aca64239f514ca8e6d39634b to your computer and use it in GitHub Desktop.
//UITableView的tableHeaderView高度自适应
//UITableView的tableHeaderView高度自适应
extension UITableView {
//set the tableHeaderView so that the required height can be determined, update the header's frame and set it again
func setAndLayoutTableHeaderView(header: UIView) {
self.tableHeaderView = header
for view in header.subviews {
guard let label = view as? UILabel where label.numberOfLines == 0 else { continue }
label.preferredMaxLayoutWidth = CGRectGetWidth(label.frame)
}
header.setNeedsLayout()
header.layoutIfNeeded()
var frame = header.frame
let size = header.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
frame.size = size
header.frame = frame
self.tableHeaderView = header
}
func sizeHeaderToFit(preferredWidth: CGFloat) {
guard let headerView = self.tableHeaderView else {
return
}
headerView.translatesAutoresizingMaskIntoConstraints = false
let layout = NSLayoutConstraint(
item: headerView,
attribute: .Width,
relatedBy: .Equal,
toItem: nil,
attribute:
.NotAnAttribute,
multiplier: 1,
constant: preferredWidth)
headerView.addConstraint(layout)
let height = headerView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height
headerView.frame = CGRectMake(0, 0, preferredWidth, height)
headerView.removeConstraint(layout)
headerView.translatesAutoresizingMaskIntoConstraints = true
self.tableHeaderView = headerView
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment