Xcode13:锁定视图方向

Xcode 13: Locking View Orientation

我正在尝试创建具有两个视图的布局 - 由附图中的紫色和红色框表示。我希望视图的位置基本上锁定,这样当 phone 旋转时,两个视图保持在同一位置。

我不知道如何在 swift 故事板中执行此操作。我看过一些类似的帖子,但它们似乎不适用于 Xcode 13.

想要的结果:

第 1 步: 使用适当的约束以通常的方式创建纵向视图。例如我有这个:

第 2 步:单击视图底部的方向按钮将视图翻转为横向

第 3 步: 为所有需要在水平视图上不同的约束添加一个变体。例如,在我的示例中,“SmallerView.leading = Safe Area.leading”仍然可以(不需要变化),但是“SmallerView.trailing = Safe Area.trailing”在水平视图中没有任何意义,我需要“SmallerView.trailing = LargerView.leading”。所以我需要为两者添加变体,“SmallerView.trailing = Safe Area.trailing”和“LargerView.leading”。

为此,我只需打开 Attributes Inspector 以获得我需要改变的约束,找到“Installed”一词,然后单击其左侧的“Add Variation”(+ 按钮):

我要添加的变体是紧凑高度,以及常规或任意宽度(取决于您计划支持的设备)。单击添加约束。

现在我看到了这个:

但我只想在纵向视图中使用此约束,所以我需要取消选中 hC:

对不适用于水平视图的所有其他约束执行相同的操作。

第 4 步: 现在我需要添加特定于水平视图的约束。为此,请切换到水平视图(底部工具栏中的方向按钮)

您现在将看到您的约束,其中一些被禁用:

现在您可以添加缺少的约束。例如,在我的例子中,我添加了 3 个新约束:

第 5 步:切换到纵向模式,现在在纵向模式下禁用第 4 步中的那些额外限制。这次你取消选中没有 hC 前缀的 Installed:

就是这样。检查 Class Sizes 以了解何时应该使用 Regular 或 Compact。