在水平UIStackView中嵌入三个UILabel在表格视图中给出了不同的结果

在水平UIStackView中嵌入三个UILabel在表格视图中给出了不同的结果

问题描述:

对于一个星期,我一直在用故事板中的一个'简单'布局挣扎。我需要三个标签,其中numberOfLines设置为两个。在水平UIStackView中嵌入三个UILabel在表格视图中给出了不同的结果

UIStackView有一些约束将它放置在表格单元格中。左边的两个标签的宽度约束设置为< = 100,以确保它们不会伸得太远。我一直在玩弄很多内容拥抱和压缩阻力,以及诸如setNeedsLayout或layoutIfNeeded之类的东西。你可以在我添加的截图中看到问题。几乎没有任何代码写在ViewController中。

当您签出我在模拟器上添加并运行的测试项目时,您会注意到在向上和向下滚动单元格时,所有单元格看起来都一样,文本也不会被截断。这正是我想要的。

Here is a link to the test project I am working in.

Result

在原型细胞设定水平及垂直Content Hugging Priority 1000与同为Content Compression Resistance Priority到1000(左标签和中间标签),结果是什么你可能寻找,使左和中东的标签小,因为他们可以和正确的填补了国内空白......

Simulator Screenshot

+0

非常感谢你对HEL让我出去!你能解释为什么1000的工作优先?这与其他约束是1000有什么关系? –

+1

使约束具有1000的优先级意味着它基本上是必需的。有时候在做更复杂的布局时,可以使用较低优先级来制定一些约束条件,这意味着如果系统有两个约束条件不能满足,它将能够以较低的优先级丢弃约束条件,如果两者具有相同的优先级,则它将基于某些逻辑并在日志中通知您“无法同时满足约束”。 – Ladislav

+0

只要“内容拥抱优先级”和“内容压缩阻力优先级”检查出这个答案,它很好地解释了每个人做什么https://*.com/questions/15850417/cocoa-autolayout-content-hugging- vs-content-compression-resistance-priority – Ladislav