使用ios的autolayout做UI

        之前一直用的是老的座標定位,和自動縮放進行ui定位,現在iphone6出來了,尺寸又變了,爲了適應各種屏幕,以前的通過判斷設備類型和設備屏幕大小調用不同的xib已經有點過時了,或者說太浪費時間了,也可以說是一種bug。現在必須使用新的autolayout來定義界面。


        使用autolayout必須知道Constraints。就是約束規則,通過定義一系列規則來描述某個控件的位置和大小,和其他控件的關係,同時可以定義優先級,優先考慮優先級高的規則。
Constraints包含以下規則:
1.自身規則。
定義自己的寬度或者高度,定義自己距離父窗口上下左右的距離,或者是居中點。
2.和其他控件規則。
定義2個控件的上下左右對齊方式,定義2個空間的上下距離。
基本上通過這2種規則的定義,我們就可以輕鬆的描述一個界面的信息,而且可以在iPhone4s,iPhone5,iPhone6,以及ipad上都能保持良好適配。


        ios8還支持SizeClasses,對於某一下在pad上和phone上希望顯示不同的控件,或者不同的控件大小,都可以通過這個功能,完成,比如aW,aH表示任意的設備,rW,aH表示一個pad等。不過個人覺得這個功能有點落伍,把在代碼中判斷設備的功能放到ui編輯器了而已。


        此外ios6和7、8對於autolayout的理解方式不一樣,比如ios7和8中如果是個UITabBarController的一個界面,最下面的空間的bottom規則定義是,距離父窗口底部距離是49(49是tabbar的高度),而在ios6中則應該定義爲距離父窗口的底部距離是0。而這個只能在代碼裏硬判斷,然後手動添加規則了。估計這也是在xcode6中開始放棄ios6的原因吧。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章