iOS開發(fā)UI一直是一個(gè)問題氢妈,當(dāng)年用代碼畫UI一度成為流行趨勢(shì)粹污,相信代碼能萬能解決問題,而且十分簡(jiǎn)單首量。
然而壮吩,現(xiàn)在由于iOS設(shè)備的不斷迭代,市場(chǎng)上常見的iPhone設(shè)備就會(huì)有:
- iPhone4/4S 960*640 (480*320 @2x)
- iPhone5/5S 1136*640 (568*320 @2x)
- iPhone6 1334*750(667*375 @2x)
- iPhone6 Plus 1920*1080(736*414 @3x)->(2208*1242)
加上iPad以后蕾总,還會(huì)有一個(gè)1024*768(@1x) 和 2048*1536(@2x)
原來想要做一個(gè)自適應(yīng)的粥航,同時(shí)支持iPhone和iPad的應(yīng)用,就算用代碼來畫UI生百,也是十分簡(jiǎn)單的递雀。而現(xiàn)在,在這總共3類蚀浆,5種缀程,7狀態(tài)的iOS設(shè)備面前,就會(huì)有點(diǎn)力不從心了市俊,更別說以后想要做WatchOS的開發(fā)就會(huì)遇到很多問題杨凑,而Autolayout的解決方法的提出大大簡(jiǎn)化了這一過程
Autolayout,就是通過一系列的約束條件來控制一個(gè)UIView在視圖中的位置摆昧,同時(shí)還要配合Size Classes(兼容iOS8之后的設(shè)備)
1撩满、對(duì)于一個(gè)TableView,我們只需要設(shè)置它的Leading、Trailing伺帘、Top昭躺、Bottom臨接到根View即可讓它永遠(yuǎn)全屏顯示,無論設(shè)備像素伪嫁。而且领炫,重要的一點(diǎn),就是在Attribute Inspector中张咳,要把這些距離設(shè)置為Standard(或者是0)帝洪,這樣才能在不同設(shè)備中獲得推薦的顯示效果(如果不是Standard或者0的話,就要小心了脚猾,這些就是所謂的魔法數(shù)字葱峡,很可能不同尺寸設(shè)備上顯示效果會(huì)有所差別)
2、對(duì)于有事想要使兩個(gè)View沿著一條中線水平對(duì)齊在兩側(cè)龙助,這個(gè)時(shí)候就需要一點(diǎn)點(diǎn)小技巧族沃,比如說,你可以拿一個(gè)空的View放在中線上泌参,設(shè)置Hidden,寬度為0常空,然后兩邊兩個(gè)View跟這個(gè)空View對(duì)齊即可沽一。同樣的方法也很適合于想要調(diào)整兩個(gè)View的比例,可以選中對(duì)應(yīng)的約束條件漓糙,在multiplier中設(shè)置比例铣缠。
3、有時(shí)候?qū)嵲诮鉀Q不了昆禽,就需要我們使用Size Classes來根據(jù)不同Size來設(shè)置了蝗蛙。默認(rèn)的Size Classes是Any Any,對(duì)于iPhone來說醉鳖,除了iPhone 6 Plus的橫屏模式捡硅,其他情況下都是長寬緊湊的,所以很好設(shè)置盗棵,對(duì)iPhone 6 Plus如果想優(yōu)化的話壮韭,就選擇長正常寬緊湊的模式,然后單獨(dú)設(shè)置纹因。iPad由于都是長寬正常的喷屋,所以一般單獨(dú)就做一個(gè)Size Classes就好。
4瞭恰、學(xué)會(huì)用Storyboard屯曹,傳統(tǒng)的Xib固然很不錯(cuò),但是Storyboard也可以作為很好的團(tuán)隊(duì)開發(fā)助力,不要把所有的視圖放在一個(gè)Storyboard恶耽,可以一個(gè)Storyboard一兩個(gè)視圖密任,把邏輯相關(guān)的非常精簡(jiǎn)的視圖放在一個(gè)Stoyboard中更能提供開發(fā)效率,而總是一個(gè)Xib一個(gè)Xib關(guān)聯(lián)反而會(huì)很凌亂驳棱。