使用自动布局和大小 类

Using Auto Layout and Size classes

我刚开始使用自动布局和大小 类,但我已经做了很多工作或研究了它是如何工作的。虽然我理解它,但我仍然无法弄清楚简单的事情。我想要做的是在纵向模式下将所有 iPhone 的两个按钮居中,虽然它在 5.5 英寸屏幕上看起来不错但随着屏幕尺寸的减小而变得更糟。我发现学习如何使用自动布局非常具有挑战性,因此非常感谢任何帮助。

您的意思是希望它们垂直居中吗? (看起来它们已经水平居中了。)

我的猜测是,现在您对顶部按钮有 顶部间距 约束。这为您提供了顶部按钮和屏幕顶部之间的固定距离,这就是为什么按钮在较小的屏幕上进一步向下推的原因 - 相同的距离代表较小屏幕的较大比例。

相反,您可能需要对其中一个按钮设置 center Y 约束。将其构建为概念证明的快速方法是:

  • 约束顶部按钮的中心 Y 等于其父视图的中心 Y
  • 限制底部按钮的顶部有一个小的(默认)space到顶部按钮的底部

这是一个快速的自动布局系统,可以让两个按钮都靠近屏幕中心,并在较小的设备上保持比例。试一试,看看它是否符合您的要求。

如果这看起来是对的,但是你想让这对按钮 在一起 居中(也就是说,你希望它们之间的间隙直接落在屏幕),您可能需要一个额外的 container view 来包含两个按钮。然后,您可以将容器视图的中心 Y 固定到其父视图的中心 Y,并将按钮分别对齐到容器的顶部和底部。

希望对您有所帮助!

这也困扰着我,直到我想通了。这里有一些提示:

  • 底部有您选择的大小class,故事板上有视图控制器的大小。它们是不同的东西!令人难以置信的是,改变大小 class 也会改变控制器的大小,所以你最终会认为 iPhone 是 compact/any.
  • 它的实际工作方式是这样的:大小 class 决定存在哪些视图和约束。当您下拉 class 而非 any/any 大小的视图时,您会注意到右侧的检查器中会出现一个复选框。它将在 "installed" 下。如果您现在更改大小 class,视图将消失,直到您将它安装到这个新的 class 上。约束也是如此。
  • 演示视图控制器的大小由右侧检查器控制。你可以把它做成你想要的任何大小,但你可能有一些目标设备,比如 iPhone 6.

自动布局:

  • 在您弄清楚它们的含义之前,约束是很繁琐的。你必须考虑一个假想的侏儒,他会为你绘制场景。如果您不给他足够的信息,他将不知道将控件放在哪里。如果你给他不一致的信息,他会吐出 NSLayoutConstraint 错误。
  • 不要使用自动生成的约束。你永远不会知道它做了什么。使用逻辑。

您的具体问题:

  1. 从 any/any
  2. 中的干净板开始
  3. 将按钮放入
  4. 从一个按钮向左单击鼠标右键,将前导约束添加到页边距。对右边做同样的事情。将约束常量编辑为零。确保它与边距无关,因为您希望它一直到边缘。这固定了按钮的 X 位置。你是说按钮的边缘必须触及屏幕的边缘,无论屏幕尺寸如何。
  5. 要固定按钮的 Y 位置,为另一个按钮的上边缘创建约束,并添加高度约束。
  6. 更改控制器的大小以查看其外观。请记住,您可能需要刷新它。