对Xib及Storyboard中的leading和trailin
网上对于leading和trailing的描述比较多,主要集中在这个描述:NSLayoutAttributeLeft 和 NSLayoutAttributeRight,代表从左右进行布局,NSLayoutAttributeLeading和 NSLayoutAttributeTrailing 代表从前后进行布局
这句话啥意思?我自己在用的时候并没有觉得这句话帮到我什么。
86D7D64C-B15F-469F-BD4B-35DB6E94C251.png
这个图直接在网上切的,我觉得用数学表达式大家可能会喜欢点:
b.leading=a.trailing x 0.5 + 0,我相信不少童鞋会潜意识的把leading理解成左边间距,trailing当成右边间距,我觉得这只能算理解对了一半,或者说是一小半。
我们平常做限制的时候,一般设上下左右的时候,都设为0,表示我们设置的底层视图占满了整个屏幕,这一想不对啊,我们明明设置了右边是0,为什么右边在上图里面被当成了屏幕的宽呢,很明显这样理解是不对的。
我们看下列这个表(引用了masonry的比较合理的解释)
8273440A-0791-4758-B6F7-9E72077A4BE2.png
我们看到他的解释是首部和尾部,对,这个才是较为客观的解释,但是首部尾部是怎么理解呢?我是这样理解的,应当把xib或者storyboard(或者是当前最顶级的父视图)当成一个坐标系,左上角是原点,leading和trailing表示坐标,那么这样就不难理解了,leading是0,而trailing是右边相对原点的x坐标,这就是屏幕的宽度。
我们潜意识里为什么把leading和trailing当成间距,因为我们的确在xib里是的确把他们当做间距来算的,比方你设置当前view A 的子视图 B的trailing为20,实际上的理解是A.trailing=B.traling+20,也就是(父视图A的右边坐标等于子视图B的右边坐标加上20),这就很好理解了,结束。