ios – 如何理解自动布局约束的第一项和第二项?

前端之家收集整理的这篇文章主要介绍了ios – 如何理解自动布局约束的第一项和第二项?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我在xib中使用tableView作为View的subView.并且tableView完全覆盖了View.但是在xib的attributor中,我可以看到刚刚添加的两个垂直约束:第一个约束使用tableView的top作为第一个项目,superView的top作为第二个项目,但是在第二个约束中,它显示superview的底部是第一个项目,并且tableView的底部是第二个项目.是什么原因让xib决定使用谁作为第一项&第二项.

解决方法

@H_502_5@ 所有约束都表达了以下形式的公式:
firstItem.firstItemAttribute == secondItem.secondItemAttribute * multiplier + constant

(关系也可以是< =或> =.)

大多数情况下,乘数为1,因此下降:

firstItem.firstItemAttribute == secondItem.secondItemAttribute + constant

从正常数的角度来考虑通常最容易.所以,像:

view.Top == superview.Top + 20

说得通.该视图的顶部比superview的顶部低20分. (在自动布局使用的坐标系中,Y增加,因此添加20个点会使位置“低于”.)

你可以切换周围的项目,但是,如果你想要相同的关系,你需要否定常量:

superview.Top == view.Top + -20

-20可能会让人更难理解.顺便说一句,Xcode会愉快地交换这两个项目并为你否定常数. (如果乘数不是1,数学会变得有点复杂,但它仍然可能.)

如果你只是交换周围的项目而不是否定常数,它会表达不同的关系:

superview.Top == view.Top + 20

这意味着superview的顶部将低于视图的顶部.或者更确切地说,视图将位于超视图顶部的上方,并且顶部将被剪裁.

现在,对另一端的约束通常用另一个顺序的项表示,因为你通常希望关系是相反的.也就是说,您希望视图的顶部位于superview的顶部下方,但您希望视图的底部位于superview的底部之上.因此,只有当您按其他顺序排列项目时,常量才是正数:

superview.Bottom == view.Bottom + 20

猜你在找的iOS相关文章