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自動布局功能
iOS 6編程(17)-自動布局深入示範
未完待續!!