網上對于leading和trailing的描述比較多,主要集中在這個描述:NSLayoutAttributeLeft 和 NSLayoutAttributeRight,代表從左右進行布局,NSLayoutAttributeLeading和 NSLayoutAttributeTrailing 代表從前后進行布局
這句話啥意思?我自己在用的時候并沒有覺得這句話幫到我什么。
這個圖直接在網上切的,我覺得用數學表達式大家可能會喜歡點:
b.leading=a.trailing x 0.5 + 0,我相信不少童鞋會潛意識的把leading理解成左邊間距,trailing當成右邊間距,我覺得這只能算理解對了一半,或者說是一小半。
我們平常做限制的時候,一般設上下左右的時候,都設為0,表示我們設置的底層視圖占滿了整個屏幕,這一想不對啊,我們明明設置了右邊是0,為什么右邊在上圖里面被當成了屏幕的寬呢,很明顯這樣理解是不對的。
我們看下列這個表(引用了masonry的比較合理的解釋)
我們看到他的解釋是首部和尾部,對,這個才是較為客觀的解釋,但是首部尾部是怎么理解呢?我是這樣理解的,應當把xib或者storyboard(或者是當前最頂級的父視圖)當成一個坐標系,左上角是原點,leading和trailing表示坐標,那么這樣就不難理解了,leading是0,而trailing是右邊相對原點的x坐標,這就是屏幕的寬度。
我們潛意識里為什么把leading和trailing當成間距,因為我們的確在xib里是的確把他們當做間距來算的,比方你設置當前view A 的子視圖 B的trailing為20,實際上的理解是A.trailing=B.traling+20,也就是(父視圖A的右邊坐標等于子視圖B的右邊坐標加上20),這就很好理解了,結束。