不了解自动布局、约束和大小 类

Not understanding auto layout, constraints and size classes

我有点卡住了,非常感谢任何帮助!

我会给你一个快速的概述。我有一个屏幕设计,它是使用 iphone 6 屏幕尺寸在草图中构建的,然后重新设计以适合 iphone 5/5s/5c,并且 6 plus 是唯一的我想支持的设备。

但是设计部分或仅针对一种特定屏幕尺寸实施设计很容易,我理解那部分。我完全迷失的地方是如何在一个视图控制器中实现一种设计,使其在我设计的所有屏幕尺寸中看起来都应该如此。

我学习了很多自动布局和大小 class 教程,但不确定如何正确使用它们以便应用程序识别 "this is an iphone 5, use these image sizing and placements instead, and this is an iphone 6 plus, use these" 等等。

到目前为止,我所看到的关于自动布局和约束的所有内容都只使用一组数字来判断与元素的距离,例如,但是所有屏幕尺寸都会有不同的距离。

我缺少或不理解什么?我知道我看错了。

在此先感谢您的帮助!

您说得对,只能使用一组数字来判断距离,但这仍然可以描述视图在不同屏幕尺寸上的显示方式。您的问题可能是您将约束视为描述您的视图框架? (这显然在每个设备上都必须不同)。我发现将约束视为描述我的视图的每个边缘与另一个视图的关系更有帮助。

例如,这是我设置的一个视图控制器,具有所有相同的约束以及它在不同设备上的外观。约束描述了大灰色视图如何固定其左右边缘距其容器视图的左右边缘 20 点。它固定在距顶部 8 磅和距标签顶部 8 磅的位置。标签垂直和水平居中,并且具有固有的内容大小。每个按钮固定在距底部边缘 20 点的位置,按钮 1 和按钮 2 分别固定在距底部边缘 20 点的位置。

我不知道这是否有帮助,或者这不是您想要的答案,您需要根据设备以不同方式排列视图:您可以告诉 Xcode 设备尺寸和方向您正在创建的约束是为了在 Interface Builder 中使用此按钮。

将其用于 select 设备 size/orientation。之后,您创建的任何约束都只会在该设备上使用。默认情况下,任何宽度和高度都是 selected,因此通常您的约束会应用于所有设备。

另外,您无法选择要支持的设备,只能选择iOS版本。