父视图中容器视图的自动布局未与布局指南对齐

Posted

技术标签:

【中文标题】父视图中容器视图的自动布局未与布局指南对齐【英文标题】:AutoLayout for Container View inside parent View not aligned to layout guides 【发布时间】:2016-04-13 15:59:20 【问题描述】:

我真的不知道如何用语言表达这个问题,所以我将展示一些令人难以置信的部分截图,说明相关视图的外观。我会提供更多信息,但我不确定这是否违反合同。对不起!

我有一个容器视图的设置(它本身在导航控制器内,在选项卡视图内)有两个视图,一个地图视图和一个表视图。表格视图似乎被分流到了左边。

最奇怪的是,如果我将手机倾斜到横向并返回到纵向,我会得到我想要的行为。

为什么这不适用于初始视图?没有设置代码来处理应用程序中任何位置的方向更改。如果我遗漏了一些可以解释这种行为的重要信息,请告诉我,我会尽快将其编辑到我的问题中,我完全感到困惑,甚至不知道从哪里开始。

编辑:我一直在寻找类似的问题,并找到了几个似乎不再适用的答案,因为它们指的是旧版本的 Xcode 和 ios,以及我以前在故事板中没有遇到过的诸如 pinning 之类的概念.

编辑 2:AutoLayout 约束:地图视图将 X 中心对齐到 Superview,Leading Space 到 Superview 等于 -20,Bottom Space 到 Container View 等于 0,Top Space 到 Top Layout Guide 等于 0,和 Equal Height到容器视图。

Container View 的 Align Center X to Superview,Leading Space to Superview 等于 -20 Bottom Space to Bottom Layout Guide 等于 0,Top Space 到 Map View,以及 Equal Height 到 Map View。

Container View 中包含的视图没有与父视图相关的直接约束,我不完全确定它在 Storyboard 编辑器中是如何工作的。

编辑 3:我拼凑了一个显示此问题的精简演示项目。

重现问题的说明:

在标签栏中选择项目 在下一个表格视图中选择一个选项 您应该会看到下一个视图中的表视图中的项目没有正确显示。 将手机横向倾斜然后返回纵向可解决此问题。

https://www.dropbox.com/s/y1y48pggs04cz19/ContainerTest.zip?dl=0

【问题讨论】:

您是否在界面生成器中设置了约束,它们是什么? 我不确定它是否是界面生成器,我正在使用 .storyboard 文件,我不确定我是否正在使用 .xib 文件,或者它们是否只是在我不知道的地方生成。编辑:刚刚发现输入保存 cmets!很高兴知道。无论哪种方式,我都会在问题中添加我的限制条件。 【参考方案1】:

据我所知,

来自您的编辑 2:-

Leading Space to Superview 等于 -20 我认为这是错误

(Leading Space) 应该是 +20 代替 -20。尝试更改它,然后检查。

您可以在下面的示例中查看带有 +20 和 -20 的前导空格示例。

示例:-


编辑 1:-

Link for demo with correction

【讨论】:

现在我更加困惑了。您似乎没有与我相同的布局指南,如果我将Leading Space 设置为20,我会在容器周围得到白色边距。另外,当我将手机倾斜到横向并回到纵向时,它们的尺寸会增加一倍。另外,如果你不介意我问一下,你用什么来捕捉那个 gif 的镜头? 使用gyazo.com上传gif图片。现在,如果您给我演示,那么我可以为您提供帮助。 好的,我整理了一个示例项目来演示我遇到的问题。在选项卡栏中选择项目,然后选择表格视图中的任何选项,您会看到下一个视图中的表格视图中的项目没有正确显示。您还应该注意到,倾斜手机横向然后回到纵向可以神奇地解决问题。 dropbox.com/s/y1y48pggs04cz19/ContainerTest.zip?dl=0 正如我所说,您对 tableview 施加了错误的约束。它的+20不是-20。检查答案中添加的演示。 我可以看到它是如何解决的,但我找不到约束在哪里。不过,看起来您已将约束分配给前沿而不是前沿,这解决了问题。谢谢!

以上是关于父视图中容器视图的自动布局未与布局指南对齐的主要内容,如果未能解决你的问题,请参考以下文章

在视图中自动布局视图

当图像视图和标签对齐在一起时,自动布局无法正常工作

将 UIImageView 与自动布局对齐

自动布局 - 在表格单元格中对齐视图

以编程方式使用自动布局约束在视图中垂直对齐中间的子视图

使用自动布局调整子视图的大小