翻譯@Auto Layout Guide(自動(dòng)布局指南)
- 原文:Auto Layout Guide
- 作者:Apple
- 更新:Yannmm@Github.com
Getting Started(新手上路)
Auto Layout Without Constraints(無(wú)約束的自動(dòng)布局)
(譯者:這里"無(wú)約束"指的是不需手動(dòng)定義約束 ??)
借助堆疊視圖(Stack View)宵睦,無(wú)需手動(dòng)定義約束壳嚎,我們也能感受自動(dòng)布局的強(qiáng)大末早。堆疊視圖適用于盛裝行列排布的界面元素然磷,其有若干屬性可供設(shè)置。
- axis:(僅適用于UIStackView)定義內(nèi)容的排布方向寡润,水平或垂直梭纹。
- orientation:(僅適用于NSStackView)定義內(nèi)容的排布方向致份,水平或垂直。
- distribution:定義既定方向上內(nèi)容的分布方式氮块。
- alignment:定義與既定方向垂直的方向上內(nèi)容的對(duì)齊方式绍载。
- spacing:定義兩個(gè)相鄰內(nèi)容之間的間距。
堆疊視圖的使用方法很簡(jiǎn)單:在界面編輯器(Interface Builder)中拖拽一個(gè)水平或垂直排布的堆疊視圖到畫(huà)布上滔蝉,并放入內(nèi)容逛钻。
如果一個(gè)內(nèi)容有固有尺寸(intrinsic content size),在堆疊視圖中它會(huì)保持這個(gè)尺寸锰提;如果沒(méi)有,界面編輯器會(huì)為其提供一個(gè)默認(rèn)尺寸芳悲×⒅猓縮放后者,界面編輯器會(huì)自動(dòng)為其添加尺寸約束名扛。
通過(guò)屬性(Attributes)面板谅年,修改堆疊視圖的屬性肮韧,微調(diào)布局融蹂。例如旺订,下例中,間距為8pt超燃,分布方式為均勻填充区拳。
堆疊視圖在布局內(nèi)容時(shí),還會(huì)考慮內(nèi)容視圖的內(nèi)縮(content-hugging)和外擴(kuò)(compression-resistance)優(yōu)先級(jí)意乓,在尺寸(Size)面板中進(jìn)行修改它們樱调。
注意
為內(nèi)容視圖添加約束,可以進(jìn)一步調(diào)整布局届良;然而笆凌,要注意避免沖突:一般來(lái)說(shuō),在某個(gè)方向上士葫,如果視圖的尺寸等同于固有尺寸乞而,就可以添加約束。更多約束沖突的相關(guān)信息慢显,詳見(jiàn)Unsatisfiable Layouts(無(wú)法滿足的約束)爪模。
此外,堆疊視圖中還可以互相嵌套鳍怨,構(gòu)建更為復(fù)雜的布局呻右。
總而言之,如果可能鞋喇,盡量使用堆疊視圖進(jìn)行布局声滥。如若不能,再手動(dòng)創(chuàng)建約束侦香。
更多堆疊視圖的相關(guān)信息落塑,詳見(jiàn)UIStackView Class Reference或NSStack View Class Reference。
注意
雖然巧妙使用堆疊視圖可以創(chuàng)建復(fù)雜界面罐韩,但仍無(wú)法完全回避手動(dòng)創(chuàng)建約束憾赁。至少,我們需要通過(guò)約束定義堆疊視圖本身的位置散吵。