UITableViewCell中的两个堆叠的动态高度标签

时间:2018-09-27 13:34:00

标签: ios swift uitableview autolayout uistoryboard

我试图在UITableViewCell中堆叠两个标签。我在tableView上设置了AutomaticDimension和EstimateRowHeight。 enter image description here

我希望单元格显示堆叠在一起,如果它们都有内容,它们的动态高度。

如果只有一个内容,我希望它位于单元格的中央,或者希望单元格折叠以仅显示该标签。

enter image description here

我尝试了所有我能想到的约束组合,但通常标签要么不会展开,要么最终会在标签应有的填充空间出现。

如果标签上没有文字,则设置为label.text = ""

每次设置文字时,我都会在标签上拨打sizeToFit()

正确的约束组合是什么?这是我目前必须开始的。 enter image description here enter image description here

3 个答案:

答案 0 :(得分:0)

这可以使用iOS中的StackViews完成,

在情节提要中选择两个标签,然后将它们嵌入UIStackView

其中一项好处是,如果您声明了良好的约束条件,它将自动处理所请求的行为。

enter image description here

我建议本教程开始使用UIStackView here

答案 1 :(得分:0)

更好的解决方案是$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

如果您仍然想和UIStackView一起使用,可以再尝试一件事:

enter image description here

设置UILabel会降低标签的高度,但是标签之间距离的限制不会使标签居中。

为此,添加距离约束的参考出口并进行设置:

label.text = ""
设置distanceConstraint.constant = 0 时以编程方式

这会将标签的数据设置在中心。

希望这会有所帮助。

答案 2 :(得分:0)

  • 您必须制作两个带有前,后,顶部和底部约束的标签,并且不要添加高度约束

  • 使标签的行数= 0

  • 检查标题标签,然后从大小检查器菜单中单击优先级为250而不是251的垂直内容,如屏幕所示

image

  • 在viewController中连接您的tableview并添加以下行

    self.tableView.rowHeight = UITableViewAutomaticDimension self.tableView.estimatedRowHeight = 44