如何使视图高度根据其子视图内容而增长

问题描述:

我有一个父视图,其高度必须由其子内容决定。如何使视图高度根据其子视图内容而增长

如何在故事板中实现此功能而无需编程改变它。

您可以使用AutoLayout完成此操作。

确保每个子视图都有约束来定义其大小和位置。然后,将父视图的垂直内容拥抱和压缩阻力优先级设置为必需。这将根据其子视图的高度和位置来定义父级的高度。

请注意,根据子视图的内容,您可能还需要更改其垂直内容拥抱和压缩优先级。例如,一个numberOfLines设置为0的UILabel可以根据其内容自动增长,所以您希望它垂直拥抱它的内容并抵制垂直压缩,以便调整父视图的大小。

此图显示了在检查器面板中设置的垂直拥挤和压缩阻力优先级的父视图(白色)。请注意,父视图对其宽度,x位置和y位置设置了约束,但不是其高度。它可以根据子视图的高度和位置来推断它的高度(请参见下图)。

enter image description here

此图像显示每个子视图的约束。请注意,这些视图的垂直拥挤和压缩电阻优先级分别为而不是已更改。这些视图中的每一个对x位置和y位置都有约束,但是您会注意到并非所有视图都对宽度和高度都有约束。像标签和开关这样的视图能够根据其内容自动推断其大小限制。如果您没有为每个子视图设置垂直位置约束,则AutoLayout将不知道每个视图需要多少空间,因此它不知道父视图应该有多高。

enter image description here

+0

感谢您解释。我不明白你能解释如何做到这一点与图像或一系列的指令下面的情况..我有一个视图(父),它有一个开关和两个标签和一个垂直按钮之一之后。 –

+0

一旦我得到了足够的分数,我就会高兴你 –

+0

如果你能解释我更多关于抵抗和拥抱,这将是一件好事 –

1-添加您查看容器,并添加约束。不要设置高度或底部间距,也不要设置它,但优先级较低(示例999)。

2-将项目/东西添加到您的视图容器并添加约束。一定要添加所有需求限制,并在底部的项目中添加底部空间。

这将定义容器视图的高度。

enter image description here

enter image description here

PD:忘掉Content Hugging/Compression and Priority。他们很方便,但在这里没有用。他们只是设定一个阻力来变大或变小。