關(guān)于Autolayout
自從Autolayout引入以來(lái),受到越來(lái)越多開發(fā)者的追捧,蘋果官方也推薦開發(fā)者盡量使用Autolayout來(lái)布局UI界面,本人在日常的開發(fā)中能用Autolayout實(shí)現(xiàn)的絕不用代碼,不方便實(shí)現(xiàn)的也想著法子實(shí)現(xiàn),可以這么說(shuō),Autolayout對(duì)于開發(fā)效率的提升不是一點(diǎn)兩點(diǎn),
如果你對(duì)Autolayout還不了解或還未使用,可以閱讀這篇博文寒哥細(xì)談之AutoLayout全解.
總的來(lái)說(shuō)只要在開發(fā)中多實(shí)踐還是比較容易掌握的.閑言少敘,接下來(lái)進(jìn)入主題.
在開發(fā)中我們可能會(huì)遇到等分布局的需求,這里我主要介紹兩種方法,如果還有其他更好的方法,歡迎交流.
- 使用約束,設(shè)置Width屬性的值
- 使用UIStackView(最低支持iOS9)
一.使用約束
1.1 在一個(gè)View中放置一個(gè)View

1.2 設(shè)置View的上下左邊距

1.3當(dāng)然這些約束還是不夠的,接下來(lái)設(shè)置View的寬度

選中藍(lán)色的子View,按住control鍵,拖向父View,會(huì)出現(xiàn)上圖的黑色框,選擇Equal Widths,這步操作是讓子View的寬度和父View寬度相等,但這不是我們想要的,接下來(lái)是最關(guān)鍵的一步
1.4 設(shè)置約束Width Multiplier的值

1.5 這時(shí)候第一個(gè)View的寬度為父View寬度的1/3,其他兩個(gè)View可以采用上面的方法設(shè)置,也可以設(shè)置其寬度和藍(lán)色View的寬度相等,完成后是這樣子的,是不是很簡(jiǎn)單.

二.使用UIStackView
關(guān)于UIStackView
UIStackView是iOS9 引入的一個(gè)布局神器,StackView提供了橫向和縱向的線性布局功能。當(dāng)多個(gè)View被嵌入到StackView,你不再需要去為這寫個(gè)View去定義布局約束,StackView會(huì)自動(dòng)對(duì)這些子視圖進(jìn)行布局處理,是不是很神奇,那就讓我們開始接下來(lái)的神奇之旅吧.
想了解更多UIStackView的信息,可以參考這篇文章IOS9 Xcode7 下的布局神器 Stack Views
還是接上面的例子,咱們展示一下使用StackView如何實(shí)現(xiàn)等分布局
2.1 添加三個(gè)View

2.2 選中三個(gè)View,點(diǎn)擊右下角類似于向下箭頭的按鈕

點(diǎn)擊之后效果是這樣的

三個(gè)View手牽手在一起了,但是并沒(méi)有相對(duì)于父View實(shí)現(xiàn)等分,其實(shí)也不難理解StackView雖然能實(shí)現(xiàn)嵌入子View線性等分,但也必須也指定StackView相對(duì)于父View的約束,不然StackView不知道以誰(shuí)為參照物,接下來(lái)設(shè)置StackView相對(duì)于父View的約束


這時(shí)候三個(gè)子View 并沒(méi)有實(shí)現(xiàn)等分,這里需要介紹一下StackView的四個(gè)屬性
- Axis:子控件的布局方向
- Alignment:子控件對(duì)齊方式
- Distrubution:子控件的大小如何計(jì)算
- spacing:子控件的最小間距
只要設(shè)置一下這四個(gè)屬性,等分布局將展現(xiàn)在眼前

大功告成.
需要注意的是UIStackView是iOS 9才引入的,因此在使用的時(shí)候要注意iOS9之前系統(tǒng)的兼容.