使用AutoLayout有一段時(shí)間了,配合Xcode6新推出的size class做界面適配和自適應(yīng)布局非常好用。目前網(wǎng)上有關(guān)AutoLayout的教程大都淺嘗輒止,或者僅涉及到對設(shè)備的橫、豎屏的動態(tài)布局等比較簡單的應(yīng)用,而對AutoLayout做動態(tài)界面相關(guān)的內(nèi)容卻非常少,因此結(jié)合日常工作中的一些經(jīng)驗(yàn),來為大家做一些分享。
我們要做什么
相信很多開發(fā)者都需要解決這樣一系列問題:
我們需要根據(jù)用戶操作,或服務(wù)端返回的數(shù)據(jù),而動態(tài)顯示/隱藏一些控件,以達(dá)到靈活布局的效果。
我們需要根據(jù)需要調(diào)整某一控件的尺寸大小,位置信息,以輸出最適宜的界面布局。
面對類似高動態(tài)的界面實(shí)現(xiàn)時(shí),以往我們的方法是通過代碼來計(jì)算和判定控件的大小和位置,并結(jié)合控件的hidden,frame等屬性對其進(jìn)行設(shè)置,在實(shí)際使用中往往需要進(jìn)行比較復(fù)雜的計(jì)算,比較繁瑣。拋開代碼黨和xib黨的爭論,下面介紹一種使用AutoLayout實(shí)現(xiàn)動態(tài)界面的方法。
如示例圖所示,我們將要構(gòu)建一個由三個控件構(gòu)成的簡易應(yīng)用,通過底部的show和hide按鈕,控制第二個組件SecondObject的顯示和隱藏,并使得第三個控件根據(jù)情況自動布局。

操作步驟
一、新建一個iOS項(xiàng)目,在storyboard中拖入三個UILabel控件,并為其設(shè)置合適的AutoLayout約束:

二、 為需要操作的約束設(shè)置屬性并關(guān)聯(lián)到代碼

這里的兩個約束分別是: *SecondObjectTopSpace:SecondObject頂部到FirstObject的距離 *secondObjectHeight:SecondObject的高度
三、 編寫show和hide方法,為約束賦值,直接控制SecondObject的高度和距離'FirstObject'的頂部距離,從而達(dá)到完全隱藏/顯示SecondObject的目的。
- (IBAction)show:(id)sender{self.secondObjectHeight.constant =107;self.SecondObjectTopSpace.constant =60;}
- (IBAction)hide:(id)sender{self.secondObjectHeight.constant =0;self.SecondObjectTopSpace.constant =0;}