如何使 UIViews 按比例增长

Posted

技术标签:

【中文标题】如何使 UIViews 按比例增长【英文标题】:How to make grow UIViews proportionally 【发布时间】:2017-02-22 19:00:17 【问题描述】:

我在下面有类似的观点:

Views stack

当缩小黄色视图高度时,如何使第一个和最后一个视图的高度按比例增大?我可以通过设置内容拥抱优先级和内容压缩来做到这一点吗?

【问题讨论】:

也许this 对你有帮助? 不完全是。我不想让这个视图具有相同的高度。我想增加两种视图,而这个黄色的视图越来越小。我只能在只有一个视图在增长时,当这个黄色的视图越来越小时,才能创造情况。但我想,例如,将黄色视图留下的空间分成两部分,并将这个值添加到第一个和最后一个视图的高度。 我不明白您的问题:在您的示例中,您有 4 个视图。从上到下:紫罗兰色、标签、黄色和纽扣。 “两种观点”是什么意思?哪个“一个视图在增长,当这个黄色的视图越来越小”?什么是“第一个和最后一个视图”? 第一个视图是紫色,最后一个视图是按钮。当黄色视图变小时,我希望紫罗兰色和按钮都变大。现在我处于一个点,如果黄色视图变小,只有按钮变大。那是我的问题。 所以我假设标签的高度应该保持不变。您是在 Interface Builder 中还是在代码中分配布局约束? 【参考方案1】:

既然我显然理解了你的问题,我建议如下:

必须将紫罗兰色视图的顶部设置为与超级视图的顶部相同。 紫色视图的高度仍未定义。 紫色视图的底部必须设置为与标签的顶部相同。 标签具有固定高度。 标签的底部必须与黄色视图的顶部相同。 黄色视图最初具有固定高度。 黄色视图的底部必须设置为与按钮的顶部相同。 按钮的高度仍未定义。 按钮的底部必须设置为与超级视图的底部相同。

这使得紫色视图的高度和按钮未定义。但是您的要求是它们的高度成比例。 这可以通过首先将它们设置为彼此相等来实现。然后双击约束并更改乘数,例如将紫色视图的乘数调大,按钮的乘数变小。 然后你有一个完整的垂直约束链,如果你将高度 0 分配给黄色视图,自动布局应该可以正常工作。

【讨论】:

以上是关于如何使 UIViews 按比例增长的主要内容,如果未能解决你的问题,请参考以下文章

CSS3如何固定图片宽度使图片高度按图片比例自适应?

使 UILabels / UITextFields 在所有手机上按比例看起来相同

CSS3如何固定图片宽度使图片高度按图片比例自适应?

如何按比例设置此 jQuery 动画的持续时间?

C#里winform最大化时,如何使里面的控件按比例变化

使 UIImageView 及其 UIImage 按比例缩放而无需额外的填充