IOS AutoLayout在横向和纵向之间切换时出现约束异常

Posted

技术标签:

【中文标题】IOS AutoLayout在横向和纵向之间切换时出现约束异常【英文标题】:IOS AutoLayout with constraint exception when switching between landscape and portrait 【发布时间】:2016-03-13 08:26:33 【问题描述】:

对于 iPhone 6+ 横向和纵​​向,我有不同的尺寸等级。如果我从横向或纵向开始运行,我不会收到任何约束错误。当我从横向或纵向切换时,我得到约束错误。看来,如果我切换,我会合并纵向和横向的尺寸类约束。我只设置了 1. 常规宽度和紧凑高度 2. 任何宽度和紧凑高度 3. 紧凑高度和常规宽度 4. 常规宽度和常规高度。我是否做错了什么可能导致冲突。谢谢。

【问题讨论】:

当您从纵向进入横向或反之亦然时,请先删除旧约束,然后再添加新约束。 您有关于如何删除旧约束的示例代码吗?谢谢。 【参考方案1】:

如果您为 Any 尺寸类添加约束,那么它们将适用于所有设备上的所有方向,因此您需要确保它们与所有其他约束兼容。根据您指定的组合(您的列表中似乎有错字),您似乎可能已经过度设计,但很难确定。首先查看布局引擎删除的约束及其定义位置,然后您可以找出冲突所在,并在某些尺寸类中将其关闭,或者重新设计尺寸类,使它们都是独立的,或者使用 @ 987654323@ 的情况更加一致。

【讨论】:

我打算为不同的方向展示不同的布局。如果我不切换方向,则没有错误。只有当我切换时。我应该更改哪些尺寸等级以支持不同方向的不同布局。谢谢。 考虑/或者***.com/questions/26023201/… 非常感谢您的回答。我想我只是遇到了上面***中提到的同样的问题。我可能会考虑那里提到的内容。 当设备处于纵向时,我最终删除了所有横向约束,反之亦然。谢谢。 这似乎是这种情况,但我认为这是链接中的一个错误,就像我的案例 1 一样。如果我以工作方向加载然后旋转到一个不是的方向,一切正常(额外任何约束) 2. 与故事板构建器中的这些任何约束没有冲突,这表明它们实际上是要被排除的。

以上是关于IOS AutoLayout在横向和纵向之间切换时出现约束异常的主要内容,如果未能解决你的问题,请参考以下文章

在 iPad/iPhone 上在纵向和横向之间切换时响应站点被放大

Android - 在横向和纵向模式之间切换使 Intent 失去价值

Reportlab:如何在纵向和横向之间切换?

如何在不使用代码的情况下使用约束 AutoLayout 来指定横向与纵向的不同布局?

在两个视图之间切换以及从纵向切换到横向时出现 iPad 方向问题,反之亦然

相同的自动布局约束在纵向和横向中表现不同