2014-03-26 107 views
7

我一直在努力通过Matt Nueberg的编程iOS 7书籍,并且一直在努力理解约束方向。在该书的第28页上,在multiplier, constant部分,作者声明:关于iOS约束方向的迷惑

第一个属性设置为结果。

所以我读这一点,方法是,当有两个项约束,第1项根据项目的值2.

所以我有一个视图和子视图(导出或依赖按钮),我想水平居中按钮。所以我安排我的观点和按钮,然后按住Ctrl拖动从按钮到父视图:

enter image description here

,并选择Center Horizontally

enter image description here

那么,如果我选择约束虽然,我在属性检查器右侧看到以下内容:

enter image description here

这将超级视图显示为项目1,将按钮显示为项目2.这是否意味着它会尝试调整超级视图的中心以匹配按钮的中心?那不会是我想要的。还是我误解了第1项和第2项的含义?或者这是否意味着我做了控制 - 向后拖动,你应该像从前那样从依赖拖动到依赖,而不是从属到依赖?

我假设订单确实是的问题,也就是说,它是第1项,哪一项是第2项。因为有一个菜单选项可以将两者交换。如果它只是一个解决者而不偏好调整的内容,那就没有必要。

回答

3

您确实以正确的方式拖动关联(这就是为什么菜单选项列出centre in container)。

第一项是应用约束的项目。如果要将视图置于其容器中,则约束将应用于容器,而不是子视图。

假设您正在应用约束将视图的顶部链接到顶部布局指南的底部。在这种情况下,约束条件适用于视图,所以它是项目1,布局指南是项目2.

引擎只是一个求解器,但在某些情况下,顺序很重要。如果2个项目被标记为相等,那么哪个是第一项并不重要。但是,如果约束有一个乘数,那么顺序就很重要 - 就像一个长宽比约束,其中顺序决定了什么被用作宽度和什么是高度。