【问题标题】:Label height in Cell won't change height dynamically单元格中的标签高度不会动态改变高度
【发布时间】:2019-07-02 10:00:45
【问题描述】:

我有一个带有几个标签的单元格。其中一个标签是针对问题的。我的应用程序有不同长度的不同问题。所以我需要我的标签有一个动态的高度。我想通过自动布局来实现这一点。当我使用当前的自动布局运行我的应用程序时,它不会改变高度(参见图片)。我不确定我做错了什么。我已将标签的行数更改为0并添加了:

tableView.estimatedRowHeight = tableView.rowHeight
tableView.rowHeight = UITableView.automaticDimension

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return UITableView.automaticDimension
}

到我的 viewDidLoad(),但它不会改变我标签的高度。奇怪的是,当视图更改为另一个视图时,它会改变高度。查看 Youtube 链接以了解我在说什么:Youtube video。将视频的速度更改为最慢以查看最佳效果。它发生在视频的 0:04 秒左右。

约束:

设备上的标签:

Autor 标签约束:

横幅视图约束:

【问题讨论】:

  • 您是否尝试仅添加标签并调试哪个视图正在破坏调整大小?
  • 是的,我有!当我删除除有问题的标签之外的每个标签时,它仍然不会改变标签的高度,直到视图发生变化。
  • 设置标签numberOfLines = 0 并且不要使用任何静态高度限制。设置tableView的动态rowHeight -> tableView.estimatedRowHeight = 44 // whatever you want tableView.rowHeight = UTableView.automaticDimension.
  • 数据加载完成后,您可以执行tableView.beginUpdates()tableView.endUpdates()
  • 我认为您的其他组件压缩了您的问题标签。在您的单元格中使用垂直 stackView。不要使用任何静态高度约束。并使用我之前的 cmets 中提到的技术。

标签: ios swift uitableview autolayout label


【解决方案1】:

最初tableViewCellheight 根据label's textLoading...

一旦收到来自FirebaseQuestions 响应,为了反映tableViewCell's content 及其height 的变化,您需要重新加载整个tableView,即

tableView.reloadData()

在收到API 响应并更新您用于tableViewdataSource 后调用上述代码。

【讨论】:

    【解决方案2】:

    添加与该调整大小标签的超级视图相关的所有约束。 也可以使用

    label.numberOfLines = 0
    label.lineBreakMode = .ByWordWrapping 
    

    【讨论】:

    • 不起作用..它仍然不会改变标签的高度,直到视图改变!
    • 使用 tableView.estimatedRowHeight = 100(或任何常量)肯定会起作用
    • 您是否针对该特定标签的内容视图添加了所有约束?
    • 是的,我已经添加了与标签内容视图相关的所有约束。
    • 也添加这个 textLabel.lineBreakMode = .ByWordWrapping
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 2014-06-23
    相关资源
    最近更新 更多