27

我在视图控制器(VC)上添加了一个 uiview,试图设置它的宽度等于 VC 的视图宽度。

我设定和期望的: xcode 设置和预期结果

我在 iphone 6 plus 上得到了什么: 我在 ip6+ 上得到了什么

我试图改变前导空格和尾随空格的常量,但没有帮助。iphone 6+ 自动布局有什么特别之处吗?

这里的视图设置是“任意宽度 x 常规高度”

-------- 2016 年 12 月添加到像我这样对这种情况感到困惑的人:UIView 中有一个布局边距属性,即 UIEdgeInsets(8,8,8,8)。它类似于 css 填充。

当你的视图的边缘靠近超级视图的边缘并且preservesSuperviewLayoutMargins 属性为真时,实际的布局边距可能会增加以防止内容与超级视图的边距重叠。

默认边距为每边 8 个点。

如果视图是视图控制器的根视图,则系统设置和管理边距。顶部和底部边距设置为零点。边距因当前尺寸等级而异,但可以是 16 或 20 磅。您无法更改这些边距。

4

5 回答 5

53

添加约束时,请尝试删除检查约束到边距。这里看看:

检查对边距的约束及其结果

限制到边距 结果

现在,在删除约束并重新添加约束后,未选中 Constrain to margins,结果如下:

约束到未选中的边距 没有限制边距的结果

于 2014-09-22T12:50:20.057 回答
19

Sharon 的回答效果很好,但您不必删除现有的约束来解决问题。您可以编辑现有约束以删除多余的边距:

在应用解决方案之前 解决步骤 涂抹溶液后

于 2015-02-13T03:39:38.207 回答
0

编辑现有约束以删除无关边距将不起作用。您必须删除现有的约束并添加新的约束以保持未选择边距的约束。

于 2015-05-19T06:35:20.553 回答
0

我的“完成”按钮遇到了同样的问题。问题是我的视图(完成按钮)位于基本视图层次结构中,所以我将视图带回根视图(视图控制器的视图)。并相应地设置约束。

我的案例设置约束 Pin-> 取消选中 Constraints to Margin -> Bottom,Leading,Trailing (Constraints value=0)

在此处输入图像描述

确保视图层次结构不应该遵循这种方式。(子视图可能是,但剪切视图不能)。

在此处输入图像描述

于 2015-09-04T10:46:53.630 回答
-1

我在 iPhone 6 plus 模拟器中遇到了这个错误。但是在 6 plus 设备中,这个错误并没有发生。这可能只是 6 个以上模拟器的错误。

于 2016-12-05T02:08:57.807 回答