我一直在使用Matt Nueberg编程的iOS 7书籍,并且正在努力通过约束的方向来理解某些东西。在本书的第28页,在multiplier, constant
部分,作者声明:
第一个属性设置为结果。
所以我读这个的方式是,当有两个项目约束时,项目1是基于项目2的值派生或依赖的。
所以我有一个视图和一个子视图(按钮),我想水平居中按钮。所以我安排了我的视图和按钮,然后从按钮控制拖动到父视图:
并选择Center Horizontally
:
然后,如果我选择该约束,我会在右侧的属性检查器中看到以下内容:
这将超级视图显示为项目1,将按钮显示为项目2.这是否意味着它会尝试调整超视图的中心以匹配按钮的中心?那不会是我想要的。或者我误解了第1项和第2项的含义?或者它是否意味着我做了控制 - 向后拖动,你应该从依赖拖到依赖,而不是像我那样从依赖拖到依赖?
我认为订单确实很重要,也就是说,第1项是第2项。因为有一个菜单选项来交换这两个。如果它只是一个对调整后的内容没有偏好的解算器,那就没有必要。
答案 0 :(得分:3)
您确实以正确的方式拖动了关联(以及列出centre in container
菜单选项的原因。)
第一项是应用约束的项目。如果要将视图置于其容器中心,则约束将应用于容器,而不是子视图。
假设您正在应用约束将视图顶部链接到顶部布局指南的底部。在这种情况下,约束将应用于视图,因此它是第1项,布局指南是第2项。
引擎只是一个求解器,但在某些情况下,顺序很重要。如果2个项目被标记为相等,则首先是哪个项目并不重要。但是,如果约束具有乘数,那么顺序很重要 - 比如宽高比约束,其中顺序决定了什么用作宽度和什么作为高度。