我有一个带有tableHeaderView的tableView,它通过nib文件分配。此tableHeaderView包含一个TextView(橙色背景),使用sizeThatFits
调整高度约束。
let textViewSize = titleView.sizeThatFits(CGSize(width: titleView.frame.size.width, height: CGFloat(MAXFLOAT)))
textViewHeightConstraint.constant = textViewSize.height
此标题视图的约束设置为正确驱动它的高度。
当tableView调整tableHeaderView的框架大小时,当UITextView中的滚动未启用时,headerView.systemLayoutSizeFitting
会得到非常奇怪的结果。
if let headerView = tableView.tableHeaderView {
let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
var frame = headerView.frame
frame.size.height = height
if headerView.frame.height != height {
headerView.frame = frame
tableView.tableHeaderView = headerView
headerView.setNeedsLayout()
headerView.layoutIfNeeded()
}}
如果启用了textView中的滚动,则tableHeaderView会按预期进行缩放,但textView会切断顶行。
如果禁用了textView的滚动(所需设置),则此headerView的高度将计算为大于所需的大小。文本的长度似乎会增加这种效果。
我还应该补充一点,TextView被赋予了带有各种段落和行间距选项的属性文本。
对于可能发生的事情的任何建议都非常感激。
答案 0 :(得分:0)
我已经解决了我的问题。我仍然不确定为什么会出现上述问题,但是当我在故事板中应用标题视图时(通过nib文件加载它并在运行时将其分配给tableView.tableHeaderView
)我的所有自动布局问题都消失了。
仍然想知道为什么它是错误行为,如果有办法让我的表头视图通过xib文件工作