自动布局 - 为啥“垂直间距”有时会附加到视图的另一侧?

Posted

技术标签:

【中文标题】自动布局 - 为啥“垂直间距”有时会附加到视图的另一侧?【英文标题】:Autolayout - Why does "Vertical Spacing" sometimes attach to the opposite side of a view?自动布局 - 为什么“垂直间距”有时会附加到视图的另一侧? 【发布时间】:2014-01-13 05:38:01 【问题描述】:

当我在界面生成器中选择“垂直间距”时,我希望上视图的 bottom 和下视图的 top 有关系。然而,经常发生的情况是下视图的底部链接到上视图的底部。然后在运行时底部视图将有错误的帧(在调整大小、动画等之后)。有没有办法可以确保视图始终从下到上链接?

[编辑]

这是另一个例子。我设置了 419px 的高度。我选择“顶部空间到顶部布局指南”。但相反,它限制了 imageview 的 bottom 应该离 superview 的顶部多远。然后我将高度从 419px 更改为 374px,视图具有正确的高度,但顶部有一个间隙。

【问题讨论】:

不清楚你的意思。能否附上xib的布局示例,或者换个说法再解释一下? 抱歉,谢尔盖,但问题消失了。这不是我第一次遇到这种情况,但我不知道如何复制它。 (如果我这样做了,我会停止这样做!;-) 今天又碰到这个,又加了一个例子。 【参考方案1】:

我已经多次注意到这一点(通常是在将某物的顶部附加到 topLayoutGuide 时),我将其归结为 Interface Builder 中的一个错误。 似乎这个问题在 Xcode 5.1 的测试版中已经消失了

我发现的唯一解决方法是最初将您的视图从您附加到的视图中移开,然后然后创建约束。在这种情况下,Xcode 通常会做正确的事情。然后手动将约束的常量编辑回 0(或任何你想要的值)。

【讨论】:

这看起来很有希望,但它导致了相同的“垂直空间 - (-355)”约束。希望它在下一个版本中得到修复! 另外,您是如何创建约束的? Ctrl + 拖动? 是的。通常我控制从视图拖到自身上,但我也尝试控制拖到侧边栏中的“顶部布局指南”。【参考方案2】:

尝试添加“顶部间距到最近邻”约束,而不是添加垂直间距。请参考附图,

希望这会有所帮助。

【讨论】:

【参考方案3】:

此问题已在最新版本的 Xcode 中得到修复。您现在可以选择要附加到约束的哪一部分。最初可能会附加错误,但现在约束编辑控件要好得多。

【讨论】:

以上是关于自动布局 - 为啥“垂直间距”有时会附加到视图的另一侧?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 自动布局 >> 视图没有改变它的大小

自动布局问题 - 垂直间距

滚动视图不在自动布局中滚动子视图

界面生成器中的自动布局

iPad纵向和横向的自动布局iOS8

xcode自动布局隐藏视图占用空间