Autolayoutdevise适应iPhone 3.5英寸和iPhone 4英寸屏幕尺寸

我正在创build一个通用应用程序。 现在我想在屏幕上放置两个button:

放置两个按钮

我尝试了自动布局和界面生成器(iOSdevise器),但我只设法适应一个屏幕尺寸(例如3.5英寸显示器)的button。 因此,我将button的大小和间距设置为顶部(超级视图的顶部和上面的button的底部)。

但有没有一种方法适应屏幕尺寸? 例如,button的宽度是视图宽度减去一定的差距。 或者像图片中的button居中(一个会很容易)? 这可能吗?

比另一种select是在代码中做所有事情(创buildbutton并创build约束)。 在这里,我可以查询视图宽度等,以相应地创build我的button。 这是唯一的方法吗?

如何pipe理?

编辑:

现在我在视图控制器上放置了一个空标签。 在这个标签上,我添加了以下限制:

  • 将中心Yalignment到:Superview,等于:0
  • 将中心Xalignment到:Superview,等于:0

在我的button上,我设置了一个固定的高度和宽度。 比超级视图的尾部空间等于50(水平对中作品,因为两个屏幕尺寸具有相同的宽度)。 顶部的button有以下约束:

  • 将中心Yalignment:标签,等于:20

底部的button获取:

  • 顶部空间:标签,等于:20

不知道为什么它需要不同的约束,但在GUI编辑器中,我采取了button的底部或顶部点。 这里的标签也是:

  • 将中心Yalignment:顶部button,等于:20
  • 顶部空间到:底部button,等于:20

现在,无论3.5或4英寸的显示器,屏幕上都有两个button。 一个缺点是在3.5英寸的显示屏上与导航控制器和工具栏的距离非常小。 在这里,我可以使button更小。 任何其他选项? 最初的想法是总是将空间设置为顶部元素,但是在4英寸的屏幕上,底部上的空间比。

Autolayout基于四个参数,x,y,w,h。 了解这一点,dynamic布局的关键是了解满足所有四个约束所需的最小约束数量。

在您的绘图中,我们可以通过“容器中的水平中心”来处理两个button的坐标。

w(宽度)可以是固定的(即300),也可以是推断的(如果button从前缘10离开,10从后缘向右),则宽度为300 …)

现在我们得到Y坐标和H(高度)。 你有几个选项。 限制高度,然后相应地设置Y. (即将高度locking到60,并且从顶部/底部到40的距离 – 例如,您的实际值将会有所不同…我在WWDC看到的苹果工程师的另一个技巧是在中心插入空白视图,然后在此基础上设置button的约束。

希望这增加了一点洞察力,不会让你更困惑。 Autolayout很奇怪,请记住,在ios8中,我们将有sizeClasses以及..;(

在这里输入图像说明