iOS:使用自动布局保持视图彼此按比例调整大小

Posted

技术标签:

【中文标题】iOS:使用自动布局保持视图彼此按比例调整大小【英文标题】:iOS: Keeping views proportionally sized to each other using autolayout 【发布时间】:2014-12-29 03:27:01 【问题描述】:

我在一个名为“容器”的 UIView 中有一个名为“logo”的 UIImageView。徽标在容器内水平和垂直居中。

根据应用程序运行的屏幕大小,容器的高度会根据约束条件发生变化。我希望徽标的大小与容器的高度成比例地变化,因为在 3.5 英寸显示屏上它在正常尺寸下太大了。

谁能告诉我应该对徽标和/或容器设置什么约束来更改徽标的大小?我希望能够在不诉诸代码的情况下做到这一点,因为我相信我应该能够在 IB 中进行设置。非常感谢。

【问题讨论】:

你对容器有什么限制? ,您是否也为 3.5 英寸屏幕提供了不同的徽标图像? 所有屏幕尺寸只有一个徽标图像。它以所有决议为中心。容器具有将其固定到侧面、顶部和高度的两个约束。一个设置其高度但具有低优先级,另一个具有更高优先级并确保它不会超过某个高度,即最大高度限制。这些都按预期工作。 【参考方案1】:
    您可以按住 control 的同时将图像“logo”拖到它的 superview 容器中并选择相等高度。点击标志并选择右侧的尺寸检查器,您会发现很多约束然后选择等高到。 双击Equal Height可以看到细节约束,第一项:logo图片,relation:equal,第二项:你应该选择super view,Multiplier set 1。意思是firstItem.propery = secondItem.propery关系乘数 + 常数;​​li>

我希望它可以帮助你,如果你想了解更多,你可以在 WWDC 2014 中阅读一些关于 AutoLayout 的内容

【讨论】:

感谢 Andrew,我一直在尝试所有不同的组合,但它不起作用,要么容器改变大小,要么似乎什么也没发生 :( 实际上我不得不杀死我的模拟器并重新启动一个干净的构建,这似乎让事情按预期工作。谢谢安德鲁!【参考方案2】:

在您的 xib 文件中,首先检查 imageview 徽标是否在容器视图的子视图中,然后使用命令键选择您的 imageview 和容器视图。选择两者后,转到编辑器菜单并在 pin 选项下一一选择高度相等和宽度相等。 然后选择您刚刚添加的约束,转到属性检查器,以您想要的比例更改乘数,例如 2:3(这意味着您的徽标的高度将与您的容器视图高度的比例为 2:3第一项是徽标,否则将其设置为 3:2)。

【讨论】:

以上是关于iOS:使用自动布局保持视图彼此按比例调整大小的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用堆栈视图自动调整大小

HTML时钟自动调整大小保持比例

iOS 无法在设备旋转时自动调整子视图大小

用CSS按比例调整图像大小,有可能吗?

启用自动布局的 iOS 调整视图大小

UIStackView 中按钮的按比例调整大小