IOS --Xcode6 自動佈局

1、自動佈局(autolayout)ios

一款ios app最主要的UI組件是由一個個相對獨立的可視化單元組成,例如view、label、button等。這些可視化單元的關係由兩個基本關係構成:兄弟關係和父子關係。
app

對於任何一個UI組件,肯定了它的位置(相對於父級或兄弟級)、大小也就肯定了它在整個UI視圖中的展示效果。
iphone

Autolayout(以及在ios8中新增的sizeclass)是爲了解決這些UI可視單元的佈局、排列問題。iphone5之前,蘋果尺寸大小同樣,咱們能夠將一個可視單元的位置寫死,這樣是沒問題的,可是現在,隨着iphone5 和iphone6的發佈,蘋果尺寸有多種可能,這就要求咱們app的UI元素具備在屏幕尺寸不一樣的設備上具備必定動態的可調性。目前蘋果推出的最好的解決方案就是使用autolayout和sizeclass組合對UI可視單元進行全方位的調整,經過這樣整個app能知足不一樣設備、不一樣應用場景的需求。佈局

Autolayout的做用是:幫助開發人員肯定在不一樣設備環境下,同一可視單元所應具備合適的位置和尺寸。所以,當一個控件(例如:UIView、Button)上施加的約束可以惟一肯定它的frame(x,y,width,hight)的時候,咱們的自動佈局纔是正確的。咱們經常容易犯約束不足(約束太少)和約束衝突(約束太多)兩種錯誤,例如:若是咱們給出的約束只能肯定這個view的大小或者位置中的某一項(例如y)的時候,就會出現約束不足的狀況,在xib或storyboard的左側提示框中會出現黃色的警告;若是給出的約束推導出兩個甚至是多個相互矛盾的位置尺寸的時候,就會產生布局錯誤的提示。ui

2、sizeclass屬性code

它是對當前全部ios設備尺寸的一個抽象,因爲如今不少種ios設備尺寸,若是按照之前那種針對特定設備來編寫不一樣設備佈局的話,會下降開發效率。如今有了sizeclass,事情就好辦多了。如今的設備不是不少嗎,那咱們就將屏幕的寬和高分紅三種狀況:(Compact、Regular和Any),也就是緊湊、正常和任意。這樣寬和高的各自三種狀況組合,一共就有9種狀況。以下圖所示:ip

針對每一種狀況,咱們能夠單獨在storyboard或xib中設置UI控件的自動佈局和約束。甚至某一個UI控件是否須要顯示都能輕鬆實現。開發

關於sizeclass的詳細解釋,請參考蘋果官方文檔。
文檔

3、storyboard中autolayoun和sizeclass的應用io

在Xcode6中,開發者能夠根據實際須要,針對sizeclass九種組合中的某一種或幾種分別進行自動佈局的設置,這樣,當app運行於不一樣尺寸屏幕、不一樣旋轉方向的時候,就能夠根據當前環境的size class狀況使用咱們預先設置好的佈局信息,從而達到app ui極大的靈活性。

實例的例子,請上百度自行查找,本身找例子練習。

4、添加布局約束的方式

  1. 底部佈局約束按鈕


    打開xib或storyboard,選中某一UI控件,再點擊上圖紅色圈圈。如上就是採起底部佈局方式。

  2. 按住Control鍵拖拽鼠標

    在xib或storyboard中,選中某一UI控件,而後按住Control鍵,接着按住鼠標左鍵拖動到另外一個控件(或邊界)處,鬆開鼠標後會彈出適用的約束菜單,你能夠選擇約束進行添加。這種方式比上一種方式快得多。

相關文章
相關標籤/搜索