2014-10-02 75 views
0

我正在学习自动布局。我目前正在添加一个简单的约束:视图和超视图之间的0px页边距。Autolayout:为什么这些相同的约束有所不同?

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

首先,点击您的厦门国际银行的编辑器右下方的按钮,选择左边空白处,点击加正制约,在给定的截图: first way to add constraint

这是第一个约束属性。它有一个16像素恒缘:
enter image description here

第二种方式中,选择在Xcode菜单:编辑>针>引领空间上海华:
The second way

现在,我的约束有0像素,但它也能工作:视图是根据它的父

这里是我的第二个约束性很好地适应:
enter image description here

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

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

谢谢

回答

1

您已经给出了答案。对超视图的约束与对超视图边距的约束不同。

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

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

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

+0

我仍然想知道为什么这两个菜单条目有不同的行为,为什么16px ... – Martin 2014-10-02 15:43:19

+0

因为视图控制器视图的左右边距默认为16px。但如果您喜欢的话,您可以改变它,如果当然。 – matt 2014-10-02 15:44:05

+0

他们没有“不同的行为”。 Superview意味着超级观点,而不是保证金。但是在你的第一个屏幕截图中,你检查了“边距”复选框,现在你锁定边距了。看看你面前的是什么。你需要知道的一切都在你提供的截图中。 – matt 2014-10-02 15:45:04

相关问题