關于Autolayout
自從Autolayout引入以來,受到越來越多開發者的追捧,蘋果官方也推薦開發者盡量使用Autolayout來布局UI界面,本人在日常的開發中能用Autolayout實現的絕不用代碼,不方便實現的也想著法子實現,可以這么說,Autolayout對于開發效率的提升不是一點兩點,
如果你對Autolayout還不了解或還未使用,可以閱讀這篇博文寒哥細談之AutoLayout全解.
總的來說只要在開發中多實踐還是比較容易掌握的.閑言少敘,接下來進入主題.
在開發中我們可能會遇到等分布局的需求,這里我主要介紹兩種方法,如果還有其他更好的方法,歡迎交流.
- 使用約束,設置Width屬性的值
- 使用UIStackView(最低支持iOS9)
一.使用約束
1.1 在一個View中放置一個View
1.2 設置View的上下左邊距
1.3當然這些約束還是不夠的,接下來設置View的寬度
選中藍色的子View,按住control鍵,拖向父View,會出現上圖的黑色框,選擇Equal Widths,這步操作是讓子View的寬度和父View寬度相等,但這不是我們想要的,接下來是最關鍵的一步
1.4 設置約束Width Multiplier的值
1.5 這時候第一個View的寬度為父View寬度的1/3,其他兩個View可以采用上面的方法設置,也可以設置其寬度和藍色View的寬度相等,完成后是這樣子的,是不是很簡單.
二.使用UIStackView
關于UIStackView
UIStackView是iOS9 引入的一個布局神器,StackView提供了橫向和縱向的線性布局功能。當多個View被嵌入到StackView,你不再需要去為這寫個View去定義布局約束,StackView會自動對這些子視圖進行布局處理,是不是很神奇,那就讓我們開始接下來的神奇之旅吧.
想了解更多UIStackView的信息,可以參考這篇文章IOS9 Xcode7 下的布局神器 Stack Views
還是接上面的例子,咱們展示一下使用StackView如何實現等分布局
2.1 添加三個View
2.2 選中三個View,點擊右下角類似于向下箭頭的按鈕
點擊之后效果是這樣的
三個View手牽手在一起了,但是并沒有相對于父View實現等分,其實也不難理解StackView雖然能實現嵌入子View線性等分,但也必須也指定StackView相對于父View的約束,不然StackView不知道以誰為參照物,接下來設置StackView相對于父View的約束
這時候三個子View 并沒有實現等分,這里需要介紹一下StackView的四個屬性
- Axis:子控件的布局方向
- Alignment:子控件對齊方式
- Distrubution:子控件的大小如何計算
- spacing:子控件的最小間距
只要設置一下這四個屬性,等分布局將展現在眼前
大功告成.
需要注意的是UIStackView是iOS 9才引入的,因此在使用的時候要注意iOS9之前系統的兼容.