如何根据其子视图内容使视图高度增长
How to make a view height grow depending on its child views contents
我有一个父视图,其高度必须由其子内容决定。
如何在不以编程方式更改故事板的情况下在故事板中实现它。
您可以使用 AutoLayout 完成此操作。
确保每个子视图都有定义其大小和位置的约束。然后,将父视图的垂直内容拥抱和压缩阻力优先级设置为必需。这将根据其子视图的高度和定位来定义父级的高度。
请注意,根据子视图的不同,您可能还想更改它们的垂直内容拥抱和抗压缩优先级。例如,numberOfLines
设置为 0
的 UILabel 可以根据其内容自动增长,因此您希望它垂直拥抱其内容并抵抗垂直压缩,以便调整父视图的大小。
此图显示了父(白色)视图及其在检查器面板中设置的垂直拥抱和压缩阻力优先级。请注意,父视图为其宽度、x 位置和 y 位置设置了约束,但没有为其高度设置约束。它能够根据子视图的高度和位置推断其高度(见下图)。
此图显示了每个子视图的约束。请注意,这些视图的垂直拥抱和压缩阻力优先级 未 更改。这些视图中的每一个都有 x 位置和 y 位置的约束,但您会注意到并非所有视图都有宽度和高度的约束。标签和开关等视图能够根据其内容自动推断其大小限制。如果您不为每个子视图设置垂直位置约束,AutoLayout 将不知道每个子视图需要多少 space,因此它不知道父视图应该有多高。
1- 添加您的视图容器并添加约束。不要设置高度和底部间距或设置它但优先级较低(例如 999)。
2- 将 items/things 添加到您的视图容器并添加约束。务必添加所有要求约束加上底部间距到底部项目里面。
这将定义容器视图的高度。
PD:忘了 Content Hugging/Compression and Priority。它们很方便,但在这里没有用。他们只是设置了一个变大或变小的阻力。
我有一个父视图,其高度必须由其子内容决定。
如何在不以编程方式更改故事板的情况下在故事板中实现它。
您可以使用 AutoLayout 完成此操作。
确保每个子视图都有定义其大小和位置的约束。然后,将父视图的垂直内容拥抱和压缩阻力优先级设置为必需。这将根据其子视图的高度和定位来定义父级的高度。
请注意,根据子视图的不同,您可能还想更改它们的垂直内容拥抱和抗压缩优先级。例如,numberOfLines
设置为 0
的 UILabel 可以根据其内容自动增长,因此您希望它垂直拥抱其内容并抵抗垂直压缩,以便调整父视图的大小。
此图显示了父(白色)视图及其在检查器面板中设置的垂直拥抱和压缩阻力优先级。请注意,父视图为其宽度、x 位置和 y 位置设置了约束,但没有为其高度设置约束。它能够根据子视图的高度和位置推断其高度(见下图)。
此图显示了每个子视图的约束。请注意,这些视图的垂直拥抱和压缩阻力优先级 未 更改。这些视图中的每一个都有 x 位置和 y 位置的约束,但您会注意到并非所有视图都有宽度和高度的约束。标签和开关等视图能够根据其内容自动推断其大小限制。如果您不为每个子视图设置垂直位置约束,AutoLayout 将不知道每个子视图需要多少 space,因此它不知道父视图应该有多高。
1- 添加您的视图容器并添加约束。不要设置高度和底部间距或设置它但优先级较低(例如 999)。
2- 将 items/things 添加到您的视图容器并添加约束。务必添加所有要求约束加上底部间距到底部项目里面。
这将定义容器视图的高度。
PD:忘了 Content Hugging/Compression and Priority。它们很方便,但在这里没有用。他们只是设置了一个变大或变小的阻力。