我有一个用于表视图标题的CustomView。
标题内标签的高度是动态的。对于iPhone 5以外的所有模拟器,它都有效。 Label文本适用于任意数量的行。高度增加变为正确的所需高度。
但对于iPhone 5模拟器,标题不会增加到合适的高度。
这是iPhone 5模拟器的问题吗?没有真正的iPhone 5设备来测试它。
答案 0 :(得分:0)
尝试使用autolayout设置标题高度。在视图布局所有子视图后,您需要设置标题高度。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.tableView.layoutHeaderView()
}
使用此扩展程序,它会将标题高度调整为所需的空间:
extension UITableView {
public func layoutTableHeaderView() {
guard let headerView = self.tableHeaderView else { return }
headerView.translatesAutoresizingMaskIntoConstraints = false
let headerWidth = headerView.bounds.size.width;
let temporaryWidthConstraints = NSLayoutConstraint.constraints(withVisualFormat: "[headerView(width)]", options: NSLayoutFormatOptions(rawValue: UInt(0)), metrics: ["width": headerWidth], views: ["headerView": headerView])
headerView.addConstraints(temporaryWidthConstraints)
headerView.setNeedsLayout()
headerView.layoutIfNeeded()
let headerSize = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize)
let height = headerSize.height
var frame = headerView.frame
frame.size.height = height
headerView.frame = frame
self.tableHeaderView = headerView
headerView.removeConstraints(temporaryWidthConstraints)
headerView.translatesAutoresizingMaskIntoConstraints = true
}
}
每次需要调整高度视图调用时
self.tableView.layoutHeaderView()
它会将桌子高度视图调整到所需的最小空间,但它不会切割任何东西。
P.S:如果你使用autolayout设置标题高度,你需要定义标签之间的距离,headerView的顶部和底部。