已设置约束但视图未正确放置

Posted

技术标签:

【中文标题】已设置约束但视图未正确放置【英文标题】:Constraints set but views not placed correctly 【发布时间】:2015-05-08 15:53:21 【问题描述】:

我遇到了约束问题。我在我的 UI 元素上设置了约束,您可以在下面看到。对于每一个,我为一些设置了 x、y 和高度/宽度。当我单击“更新框架”时,一切正常,视图放置在正确的位置。但是在预览(屏幕截图的右侧窗口)和模拟器中,视图没有正确放置,屏幕上没有任何内容。当我在模拟器上启动应用程序时,调试控制台中没有警告说存在约束冲突。在 Xcode 中也一样,没有警告也没有错误。

这是我的视图控制器和设置的约束。您可以在右侧看到多个设备的预览。

【问题讨论】:

【参考方案1】:

看起来您已将项目添加到 w:Regular 和 h:Regular 尺寸类。除了那个之外,UI 元素不在任何其他大小类中。您看不到 UI 元素,因为 iPhone 的尺寸类别是 w:Compact h:Regular。

您需要将 UI 元素添加到所有尺寸类别,而不仅仅是 w:regular 和 h:regular。

如果您仍有问题,我推荐斯坦福课程的 AutoLayout 讲座,我知道它帮了我很多忙。

【讨论】:

确实,我不明白为什么它只与这个控制器搞砸了。非常感谢!【参考方案2】:

您需要设计所有尺寸类别的视图控制器。您在 w:regular 和 h:regular 中设计视图控制器,这不适用于 iphone,因此当您运行应用程序时,视图不会显示

Apple 在 ios 8 中引入了自适应布局,因此请参阅 Size Classes 以获取更多信息

【讨论】:

以上是关于已设置约束但视图未正确放置的主要内容,如果未能解决你的问题,请参考以下文章

Snapkit centerY 约束将项目居中于中心 Y 轴上方

如何在放置在约束布局内的 NestedScrollView 中添加回收器视图,尝试添加回收器视图但未成功

Recycler View 中的约束设置动画未正确设置动画

在局部视图上设置放置区的正确方法是啥?

百分比约束宽度

未应用 nib 约束的集合视图单元格