使用AutoLayout有一段時間了,配合Xcode6新推出的size class做界面適配和自適應布局非常好用。目前網上有關AutoLayout的教程大都淺嘗輒止恕出,或者僅涉及到對設備的橫、豎屏的動態(tài)布局等比較簡單的應用,而對AutoLayout做動態(tài)界面相關的內容卻非常少芜辕,因此結合日常工作中的一些經驗,來為大家做一些分享块差。
我們要做什么
相信很多開發(fā)者都需要解決這樣一系列問題:
我們需要根據用戶操作侵续,或服務端返回的數據,而動態(tài)顯示/隱藏一些控件憨闰,以達到靈活布局的效果状蜗。
我們需要根據需要調整某一控件的尺寸大小,位置信息鹉动,以輸出最適宜的界面布局轧坎。
面對類似高動態(tài)的界面實現時,以往我們的方法是通過代碼來計算和判定控件的大小和位置泽示,并結合控件的hidden,frame等屬性對其進行設置缸血,在實際使用中往往需要進行比較復雜的計算,比較繁瑣械筛。拋開代碼黨和xib黨的爭論捎泻,下面介紹一種使用AutoLayout實現動態(tài)界面的方法。
如示例圖所示埋哟,我們將要構建一個由三個控件構成的簡易應用笆豁,通過底部的show和hide按鈕,控制第二個組件SecondObject的顯示和隱藏,并使得第三個控件根據情況自動布局渔呵。
操作步驟
一怒竿、新建一個iOS項目,在storyboard中拖入三個UILabel控件扩氢,并為其設置合適的AutoLayout約束:
二耕驰、 為需要操作的約束設置屬性并關聯(lián)到代碼
這里的兩個約束分別是: *SecondObjectTopSpace:SecondObject頂部到FirstObject的距離 *secondObjectHeight:SecondObject的高度
三、 編寫show和hide方法录豺,為約束賦值朦肘,直接控制SecondObject的高度和距離'FirstObject'的頂部距離,從而達到完全隱藏/顯示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;}