AutoLayout将UILabel高度设置为零

art*_*ras 9 objective-c ios autolayout

UILabel在其他视图中有一个for item描述,所有视图都使用Interface Builder中的约束进行布局 - 您可以在下面的图像中看到所有相关约束.行数也设置为0.

在此输入图像描述

我没有设置高度约束,因为我希望UILabel根据它包含的文本调整大小.相反,接下来会发生什么

[self.view layoutIfNeeded];
Run Code Online (Sandbox Code Playgroud)

被调用,UILabelgets 的高度设置为0.即使我没有设置其他文本UILabel,它也具有在Interface Builder中设置的项目描述的默认值.

上面的项目标题标签设置方式相同,但不会被压扁0,所以我有点困惑.

有没有这种行为的经验?

art*_*ras 13

我设法通过在Interface Builder 中将UILabel's 设置vertical compression resistance priority1000(默认750)来解决它.

在此输入图像描述

由于我的视图嵌入在另一个视图中,并且父视图的底部依赖于最低子视图的底部,我只推测UILabel在布局视图的过程中没有高度约束被挤压.可能在链条的某个地方玩其他约束的优先级会产生相同的结果,但我无法成功地做到这一点.然而,上面的解决方案是有效的,这在我的情况下已经足够了.

希望这有助于某人.