iOS 6 在應用程序用戶界面開發中,引入了自動布局(Auto Layout)概念。自動布局使用約束(Constraint)在用戶界面描述各類視圖的位置、行為和關系。
在Xcode 4.5中,我們可以使用Interface Builder,或者可視化格式語言(Visual Format Language),或者標准的SDK API調用(NSLayoutConstraint類)等等三種方式來創建約束(Constraint)。
Auto Layout用這些Constraints 來對所有的視圖進行一些計算,設置視圖的位置和尺寸。不再需要設置視圖的frame屬性,也就是完全基於針對視圖或元素所設置的Constraints來布局界面的視圖元素。
使用Xcode 4.5 創建App時,Auto Layout功能在所有nib或Storyboard 文件中,默認是enable(開啟的)。具體設置的地方,可以查看之前的文章。
在iOS 6 引入自動布局之前,我們使用springs and struts模式來設計可旋轉和調整大小的用戶界面。簡單歸納和回顧一下,主要有三種方法:
1. 自動旋轉和自動調整大小
通過在Size Inspector面板中,設置各類視圖的Autosizing屬性,無需編寫代碼,但這種僅適用於UI比較簡單的應用。
2. 調整視圖框架(frame屬性)
每一個UI 元素在屏幕上都由一個矩形區域定義,這個矩形區域就是UI 元素的frame屬性。可以使用C語言函數CGRectMake(x,y,width,height) 來重新定義視圖的frame屬性。
如果UI元素比較多,這個需要跟蹤每一個UI元素的大小和位置,代碼設計起來比較麻煩。
3. 重新設計不同的視圖-橫向和縱向視圖
在每一個場景中分別定義橫向和縱向2個視圖,這個每一個視圖都需要定義獨立的輸出口。雖然2個視圖和同一個視圖控制ViewController關聯,但是不能共享輸出口,在視圖控制器中需要交互的UI元素數量會變成 2 倍。當然優點是,不同的視圖完全獨立開了,避免相互影響。
上述三種方式在開發過程中,都存在一些缺點。iOS 6 引入的自動布局(Auto Layout)正是為了改進這個不足之處。個人覺得也可以適應之后不斷增多的不同尺寸的iPad、iPhone設備。
iOS 6 編程 -- 自動布局(Auto Layout)相關文章:
iOS 6編程(15)-創建自動布局(Auto Layout)簡單應用iOS 6編程(16)-Interface Builder自動布局功能
未完待續!!