4

我正在尝试使用自动布局对齐两个 UILabel,其中第一个标签没有设置宽度但使用固有内容大小,第二个标签应该与第一个标签的宽度相同,将文本换行到新行。

理想情况下,第二个标签应该将数字行设置为0与动态类型一起使用,但我2暂时将其设置为,甚至给它一个特定的高度。然而,当我尝试对齐equal widthstrailing时,内部内容大小标签会扩展到多行标签的宽度,就好像它都在一行上一样(见下图)。

我所追求的: 我想要的效果

我所看到的: 我得到的效果

有什么方法可以让我在不为第一个标签指定宽度的情况下实现我想要的效果?我希望它随着内容扩展以考虑动态类型,并且第二个标签具有相同的宽度并将所有文本换行到新行。

4

2 回答 2

6

您可以在不将任何内容挂钩到代码的情况下做到这一点。该解决方案的关键点是标签的内容拥抱优先级,其大小将完全根据内在内容大小计算。

内在内容大小标签

  • 将水平内容拥抱优先级设置为必需(1000)

多行标签(lorem ipsum 标签)

  • 对齐导致内部内容大小标签
  • 将尾随与内部内容大小标签对齐


两个标签的 Xcode 配置(左:Intrinsic,右:多标签)

内在内容大小标签的配置 多行标签的配置

于 2017-10-18T22:43:36.863 回答
0

layoutSubviews中,将第二个标签的preferredMaxLayoutWidth设置为第一个标签的固有宽度,如下所示:

secondLabel.preferredmaxlayoutwidth = firstLabel.intrinsicContentSize.width
于 2017-10-16T03:06:23.100 回答