iOS UI 進階 (一)

我好喜歡你發表於2017-12-19

目前就北京來說 iOS 的市場可能不是之前的那麼好,可能現在再來談論 iOS UI 進階有一點晚了,但是寫一點東西,供不明白的人看看,也算是自己的技術沉澱吧。

如果說現在你還在使用 Frame 進行 UI 的佈局,我只能呵呵,現在以及完全是 Autolayout 的天下,無論是純程式碼還是 xib ,都應該是自動佈局。具體自動佈局是什麼原理,具體怎麼實現,這裡不再贅述,沒事的時候看看 github 或者技術論壇,看看人們正在使用的是什麼技術,好好學習,天天向上。

這裡只做後續的知識的補充,甚至是本人不是很理解的知識點整理。

1.Label、Button 和 View的區別 

1)為什麼吧 Label 和 Button 放在一類和 View 作比較?

因為 Label 和 Button 一樣,它們有著共同的屬性,就是都存在Intrinsic Content Size(自有內容大小)屬性,簡單的說,就是Label 和 Button 控制元件在建立的時候是不用進行指定高度的,只需要指定座標即可。在程式執行時,程式會自動的根據控制元件內的內容確定最佳高度。但是 View 是沒有這個屬性的,在建立 View 控制元件的時候是需要指定控制元件的座標以及高度和寬度。這樣才能夠正常執行 ,Xcode 不會報錯。(在 storyBoard 中)

2)在一個 View 中上下放置兩個 Label,兩個 Label 之間不新增垂直約束,為什麼View 的高度不能夠自動確定?

其實很好理解,可能是剛開始的時候本人比較愚鈍,不是很明確為什麼,但是今天就生動形象的解釋一下為什麼如果兩個 Label 之間不新增垂直約束,View 的高度是不能確定的。

首先,兩個 Label 的頂點座標是確定的,但是高度沒有確定,由內容的高度來確定,從而實現 View 的自動佈局。當兩個 Label 之間沒有新增垂直約束的時候,第一個 Label 會向下佈局,第二個 Label 同樣也會向下佈局,因為頂點是確定的,不會向上佈局。但是第一個Label 的下面是否會和第二個 Label 的上面邊界重疊,導致高度不能夠完全自動實現。所以當一個 View 上存在兩個 Label 的時候,兩者之間的約束要考慮清楚,這樣才能實現自動佈局。

具體示例如下圖:


iOS UI 進階 (一)
簡易圖片

參考:葉孤城大神,有不是很明白的直接去看看,好好學習才是王道,感謝大神分享。

相關文章