多行 UILabel 与固有内容大小的 UILabel 宽度相同

Ale*_*der 4 ios autolayout ios-autolayout intrinsic-content-size

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

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

我追求的是: 我追求的效果

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

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

Kam*_*ski 6

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

内在内容大小标签

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

多行标签(lorem ipsum 标签)

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


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

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