Autolayout:为什么这些相同的约束不同?

我正在学习自动布局。 我目前添加一个简单的约束:视图和超视图之间的0px页边距。

显然,有两种方法可以添加这个约束:

首先,单击xib编辑器的右下angularbutton,select左边距,然后单击添加n约束 ,如给定的屏幕截图中所示: 第一种添加约束的方法

这是第一个约束属性。 它有一个16px的常量边距:
在这里输入图像说明

第二种方法,在Xcode菜单中select:编辑器>引脚>引导空间到超视图:
第二种方法

现在,我的约束有0px,但是也是有效的:视图根据其超视图很好地适应

这是我的第二个约束属性:
在这里输入图像说明

第一个问题:为什么我的第一个约束左右边距是16px ? 我正在开发一个全新的项目! 如果我设置0px,我的视图周围有一些额外的空间!

第二个问题:这两个约束有什么区别? 什么是最好的方法?

谢谢

你已经给出了答案。 超级视图的约束与超级视图的容限不一样。

如果你考虑如何在代码中形成这些约束这可能是最简单的。 以下是您可以使用的属性:

https://developer.apple.com/Library/ios/documentation/AppKit/Reference/NSLayoutConstraint_Class/index.html#//apple_ref/c/tdef/NSLayoutAttribute

如你所见,有Right和RightMargin。 将子视图的右边缘固定到其超级视图的右边与将其固定到其超级视angular的RightMargin不同。