【发布时间】:2017-03-01 08:32:57
【问题描述】:
我有一个带有 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 被分配了具有各种段落和行间距选项的属性文本。
非常感谢任何关于可能发生的事情的建议。
【问题讨论】:
标签: xcode uitableview autolayout uitextview