Created
October 17, 2016 03:57
-
-
Save luowei/9f84e6b6aca64239f514ca8e6d39634b to your computer and use it in GitHub Desktop.
//UITableView的tableHeaderView高度自适应
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//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