iOS Autolayout:处理不同的屏幕高度

iOS Autolayout: Handling different screen heights

我正在拼命地尝试掌握自动布局,并且需要有关如何最好地处理以下情况的建议。我正在使用现有设计,我需要对其进行适当布局,以便它可以在任何 iPhone 屏幕尺寸上运行。

对于每个屏幕,我都确定了应用程序的一部分应该部分 expand/collapse 以补偿屏幕高度的差异。我在下图中说明了这一点。首先,这是解决问题的最佳方法吗?

假设这是解决问题的最佳方法,应该如何添加约束来固定视图 1、2 和 4 的位置和高度,同时允许视图 2 及其内容根据设备视图进行伸缩高度?

我对约束条件进行了大量试验,但未能达到图示的结果。

如果您想要图片中的结果,请按以下步骤操作。您可以选择使用 wAny|hAny 大小 class.

  1. 从上到下,将每个相邻视图之间的垂直间距设置为 0。
  2. 将 view1 和 view3 以及 view4 的高度限制设置为静态值。

那么view2的高度在不同的屏幕尺寸上应该是不同的。

从你的图片来看,你的view1几乎占据了屏幕的一半space。所以我的建议是让它的高度成比例,你可以设置view1和它的superview等宽,然后修改这个等宽约束的比例为0.5。您可以对图片中的其他视图执行相同的操作。

这是我的做法。

所有浏览量:

  • 将前导和尾随 space 与父视图对齐

视图 1:

  • 将顶部与父视图或顶部布局指南对齐

  • 添加固定高度

视图 4:

  • 将底部与父视图或底部布局指南对齐

  • 添加固定高度

视图 3:

  • 将底部与视图 4 对齐(使用垂直间距)

  • 添加固定高度

视图 2:

  • 对齐顶部以查看 1

  • 底部对齐视图 3

除了其他答案,加上视觉格式,应该是这样的

V:|[view1(HIGHTV1)][view2][HIGHT3(HIGHTV3)][view4(HIGHTV4)]|

用静态尺寸替换 HIGHTVX