iPhone 6 Plus 自转问题

iPhone 6 Plus Autorotation Issue

我 运行 在 iPhone 6 plus(模拟器和实际设备)上遇到了一个奇怪的自转问题。

我创建了一个带有单一视图的新 Xcode 项目。它所拥有的只是初始视图控制器中的一些 UI 元素(具有适当的约束)。这是首次发布时的样子:

但是有一次,我改变了设备方向,所有 UI 元素都消失了?!?!

这不会发生在任何其他设备上。

我在这里错过了什么?非常感谢您的帮助。

关于原问题:您的自动布局约束的大小 class 似乎是错误的。这会导致您的视图在一个 width/height 组合中呈现得很好,而在另一个组合中会完全失败。以 any/any 以外的任何尺寸 class 进行设计都会导致 Xcode 底部出现蓝色尺寸 class 条,指示/警告。

一般来说,您应该为每个受支持的尺寸指定约束 classes。最简单的方法是只在 any/any class 中设计视图。这样您的布局在所有配置上都是相同的。您可以仅更改一个尺寸 class 的指定约束,也可以 select 调整该尺寸 class 并检查视图的约束, enable/disable 它们或添加新的约束.这些只会设置为特定大小 class。要查看约束,您可以在故事板中 select 或在其所属视图的大小检查器中双击它。约束大小检查器的最后一部分说明它存在的大小 classes。

要将视图从一种尺寸 class 迁移到另一种尺寸 只是 意味着在 每个 [=] 上更改此尺寸 class 44=] 视图和约束...

手动方式
为此,您需要通过按 Installed 复选框旁边的 + 并单击左侧的小 x 来添加要迁移到的大小 class您要从中迁移的尺寸 class。如果您想迁移到 any/any,请不要单击 +,只需勾选 Installed 旁边的复选框即可。 不要忘记更改视图对象本身的大小class。如果您不这样做,视图将不会以所需的大小显示 class。

自动方式
这也可以通过查看 Storyboard 文件的源代码来更改。约束设置可能如下所示

<variation key="default">
    <mask key="subviews">
        <exclude reference="fTD-HZ-ZT3"/>
    </mask>
    <mask key="constraints">
        <exclude reference="eyr-oK-LvV"/>
    </mask>
</variation>
<variation key="heightClass=compact-widthClass=regular">
    <mask key="subviews">
        <include reference="fTD-HZ-ZT3"/>
    </mask>
    <mask key="constraints">
        <include reference="eyr-oK-LvV"/>
    </mask>
</variation>

变体项目中的 key 属性显然指定了尺寸 class。 Default 意思是 any/any。只需搜索并替换所有出现的大小 class 您想要迁移的大小 class 您想要迁移到的大小会容易得多。如果您要从默认值 class 迁移或迁移到默认值 class,这会有点棘手,因为您必须将 exclude 更改为 include,反之亦然。然后,您必须添加/删除要迁移的完整大小 class 部分 to/from。工作量增加了一点,但仍然比手工操作容易得多。
但是,如果您的视图已经包含多个尺寸 class 的尺寸 class 规范,您应该小心,以便仅更改正确的尺寸。