当UITextView.isScrollEnabled = false

时间:2016-10-19 15:33:06

标签: xcode uitableview autolayout uitextview

我有一个带有tableHeaderView的tableView,它通过nib文件分配。此tableHeaderView包含一个TextView(橙色背景),使用sizeThatFits调整高度约束。

let textViewSize = titleView.sizeThatFits(CGSize(width: titleView.frame.size.width, height: CGFloat(MAXFLOAT)))
    textViewHeightConstraint.constant = textViewSize.height

此标题视图的约束设置为正确驱动它的高度。

enter image description here

当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会切断顶行。

enter image description here

如果禁用了textView的滚动(所需设置),则此headerView的高度将计算为大于所需的大小。文本的长度似乎会增加这种效果。

enter image description here

我还应该补充一点,TextView被赋予了带有各种段落和行间距选项的属性文本。

对于可能发生的事情的任何建议都非常感激。

1 个答案:

答案 0 :(得分:0)

我已经解决了我的问题。我仍然不确定为什么会出现上述问题,但是当我在故事板中应用标题视图时(通过nib文件加载它并在运行时将其分配给tableView.tableHeaderView)我的所有自动布局问题都消失了。

仍然想知道为什么它是错误行为,如果有办法让我的表头视图通过xib文件工作