【问题标题】:TableHeaderView with UITextView not sized correctly by its UITableViewController when UITextView.isScrollEnabled = false当 UITextView.isScrollEnabled = false 时,带有 UITextView 的 TableHeaderView 的 UITableViewController 的大小不正确
【发布时间】: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


    【解决方案1】:

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

    仍然想知道为什么它行为不端,以及是否有办法让我的表头视图通过 xib 文件工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 2017-01-04
      • 2013-02-03
      • 1970-01-01
      相关资源
      最近更新 更多