-1

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

两个按钮的位置

我尝试使用自动布局和界面生成器(确切地说是 iOS 设计器),但我只设法将按钮安装在一种屏幕尺寸(例如 3.5 英寸显示器)上。因此,我将按钮的大小和间距设置为顶部(一个到超级视图的顶部,一个到上面按钮的底部)。

但是有没有办法让它适应屏幕尺寸?例如,按钮的宽度是视图宽度减去某个间隙。或者像图片中那样将按钮居中(这很容易)?这可能吗?

另一个选项是在代码中做所有事情(创建按钮和创建约束)。在这里,我可以查询视图宽度等以相应地创建我的按钮。这是唯一的方法吗?

如何管理?

编辑:

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

  • 将 Y 中心对齐到:Superview,等于:0
  • 将中心 X 对齐到:Superview,等于:0

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

  • 将 Y 中心对齐到:标签,等于:20

底部的按钮得到:

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

不知道为什么它需要不同的约束,但在 GUI 编辑器中,我选择了按钮的底部或顶部。这里的标签也得到:

  • 将 Y 中心对齐到:顶部按钮,等于:20
  • 顶部空间到:底部按钮,等于:20

现在无论是 3.5 英寸还是 4 英寸显示屏,我都将两个按钮置于屏幕中央。一个缺点是导航控制器和工具栏的间距在 3.5 英寸显示屏上非常小。在这里我可以使按钮变小。还有其他选择吗?最初的想法是始终将空间设置为顶部元素,但在 4 英寸屏幕上,底部的空间比底部要多。

4

1 回答 1

1

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

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

w(宽度)可以是固定的(即 300),也可以是推断的(如果按钮距前缘 10,左;距后缘 10,右),则宽度为 300...)

现在我们得到 Y 坐标和 H(高度)。你有几个选择。约束高度,然后相应地设置 Y。(例如,将高度锁定为 60,从顶部/底部到 40 的距离 - 你的实际值会有所不同......我在 WWDC 上看到苹果工程师做的另一个技巧是在中心插入一个空视图,然后基于此设置按钮的约束。

希望这会增加一些见解,并且不会使您更加困惑。自动布局很奇怪,记住,在 ios8 中我们也会考虑 sizeClasses .. ;(

在此处输入图像描述

于 2014-09-02T20:23:49.837 回答