Ios 如何使用自动布局使用多个UILabel填充UITableViewCell

Ios 如何使用自动布局使用多个UILabel填充UITableViewCell,ios,objective-c,uitableview,autolayout,Ios,Objective C,Uitableview,Autolayout,我有一个UITableViewCell,其中包含一些UILabel,我希望此标签水平填充UITableViewCell的宽度,并且不会保留较大的空间而不是其他空间,这是一个示例: |--------------------------------------------------------- | | |***This is a uilabel***This is a uilabel*

我有一个
UITableViewCell
,其中包含一些
UILabel
,我希望此标签水平填充
UITableViewCell
的宽度,并且不会保留较大的空间而不是其他空间,这是一个示例:

|---------------------------------------------------------
|                                                        |
|***This is a uilabel***This is a uilabel***label***lb** |
|                                                        |
|---------------------------------------------------------
因此,使用不同的
UILabel
宽度,我希望所有
UILabel
填充所有
UITableViewCell
如果需要,固定字体大小,*是间距,我如何通过自动布局实现这一点?

步骤1:设置约束 最左侧标签:向其superview添加前缘约束和中心Y约束

中间标签:向上一个标签添加水平间距和Y中心约束

最右侧标签:将水平间距和Y中心约束添加到上一个标签,并将后缘约束添加到superview

这些约束可确保标签之间以及左右两侧的间隙大小固定,并且它们都在superview中居中。由于没有宽度约束,布局系统将尝试调整其大小以适合其内容。但这留下了一个模棱两可的地方

步骤2:设置内容大小优先级。 上述限制仍然不明确-

  • 如果总文本内容小于superview的宽度,则哪个标签的扩展比其内容大
  • 如果总文本内容超过superview的宽度,哪个标签将收缩其内容以适应
  • 第一个问题的答案是具有最低水平内容拥抱优先级的标签。默认情况下,它们都具有相同的优先级,因此确保它们具有不同的横向内容优先级别

    第二个问题的答案是具有最低水平内容压缩阻力优先级的标签。默认情况下,它们都具有相同的优先级,因此请确保它们具有不同的水平内容压缩优先级

    步骤3:确保文本缩小到合适的大小。
    我们现在有了一个明确的布局。但默认情况下,如果标签没有空间显示内容,则标签将截断其内容。将标签上的Autoshrink设置为最小字体比例或最小字体大小,以确保它们调整字体大小以适合其内容,而不是截断内容。

    您使用的是IB还是代码约束?我使用的是界面Builder@PIERO我不明白你的问题,请说清楚。哇,这真的很有用!谢谢你,约翰!