免費開源的iOS開發學習平臺

                                                Auto Layout : 1-自動布局簡介

                                                在蘋果推出iPhone5之前,蘋果的屏幕分辨率只有一種,因此對于iOS開發者來說,是不需要像Android工程師一樣去考慮屏幕適配問題的。但隨著iPhone5的發布,iPhone的屏幕出現了3.5寸和4.0寸兩種尺寸,這種情況下,仍然可以分別為兩種尺寸編寫各自的界面布局樣式,但隨著iPhone6以及iPhone6 Plus的發布,iPhone的屏幕尺寸變為4種,考慮到還存在橫屏以及豎屏兩種展示方式,此時就不能夠再為每一種屏幕尺寸來編寫單獨的布局樣式了。而蘋果為多屏幕適配提供的解決方案就是自動布局(Auto Layout)。

                                                Auto Layout的工作原理

                                                在Auto Layout中的基本工具就是約束(constraint),一個約束描述了兩個視圖之間的關系。Auto Layout會根據視圖的約束自動計算視圖的位置和大小。比如,設置一個按鈕的頂部距離一個圖片視圖(UIImageView)的底部距離為8px。那么一旦圖片視圖(UIImageView)的位置發生了改變,按鈕的位置也會隨之發生改變。這種基于約束的設計方法允許你根據內部或者外部約束來動態的構建用戶界面。

                                                Auto Layout考慮所有約束,然后通過數學計算來最終確定視圖的位置和大小。這些計算都是由Auto Layout來幫我們做的,我們要做的僅僅是設置約束。當我們為一個控件設置的約束不足以確定其大小和位置時,Auto Layout會給我們相關的提示。

                                                另外,當我們為一個控件設置其約束后,不論是橫屏還是豎屏狀態下,我們都能夠確定該控件的位置和大小。

                                                AutoLayout的第一個項目

                                                下方的工程中,我們通過創建三個不同顏色的視圖并且使用Auto Layout設置視圖之間的約束,使三個視圖能夠適配不同尺寸的屏幕,并且能夠根據橫屏、豎屏進行動態調整視圖的位置和大小。三個視圖之間的約束關系如下所示。

                                                首先我們來創建一個工程。

                                                ![屏幕快照 2016-12-19 下午5.24.38](http://oifaewd5m.bkt.clouddn.com/屏幕快照 2016-12-19 下午5.24.38.png)

                                                如下圖所示,在Main.stroyboard中添加三個視圖,其背景顏色分別設置黃色,綠色,紅色。三個視圖距離父視圖(即控制器的view)的邊距都是20px并且三個視圖的高度都相等,并且上面的黃色與綠色視圖之間的間距也是20px。

                                                設置黃色視圖的約束如下。設置黃色視圖左邊距離父視圖左邊20px,距離父視圖上面20px,右邊距離綠色視圖20px,并且寬度和綠色視圖相等,高度和紅色視圖相等。

                                                ![屏幕快照 2016-12-19 下午5.35.48](http://oifaewd5m.bkt.clouddn.com/屏幕快照 2016-12-19 下午5.35.48.png)

                                                設置綠色視圖的約束如下。設置綠色視圖距離父視圖右邊20px,距離父視圖上面20px,距離黃色視圖視圖右邊20px,并且寬度和黃色視圖相等,高度和紅色視圖相等。

                                                ![屏幕快照 2016-12-19 下午5.40.45](http://oifaewd5m.bkt.clouddn.com/屏幕快照 2016-12-19 下午5.40.45.png)

                                                設置紅色視圖的約束如下。設置高度和綠色視圖,黃色視圖的高度相等。距離父視圖左邊、右邊和下面都是20px,距離黃色視圖的底部和綠色視圖的底部都是20px。

                                                ![屏幕快照 2016-12-19 下午5.41.31](http://oifaewd5m.bkt.clouddn.com/屏幕快照 2016-12-19 下午5.41.31.png)

                                                當我們設置完成豎屏顯示的效果后,可以再檢查一下橫屏的效果。

                                                ![屏幕快照 2016-12-19 下午5.43.19](http://oifaewd5m.bkt.clouddn.com/屏幕快照 2016-12-19 下午5.43.19.png)


                                                欧美超级精品一级A片|欧美一级黄色视频|国产精品自在在线午夜免费|4444亚洲人成无码网在线观看|亚洲ⅴa曰本va欧美va视频