2. Auto Layout Without Constraints(無約束的自動布局)@Auto Layout Guide(自動布局指南)

翻譯@Auto Layout Guide(自動布局指南)


Getting Started(新手上路)

Auto Layout Without Constraints(無約束的自動布局)

(譯者:這里"無約束"指的是不需手動定義約束 ??)

借助堆疊視圖(Stack View),無需手動定義約束,我們也能感受自動布局的強大。堆疊視圖適用于盛裝行列排布的界面元素,其有若干屬性可供設置。

  • axis:(僅適用于UIStackView)定義內容的排布方向,水平或垂直。
  • orientation:(僅適用于NSStackView)定義內容的排布方向,水平或垂直。
  • distribution:定義既定方向上內容的分布方式。
  • alignment:定義與既定方向垂直的方向上內容的對齊方式。
  • spacing:定義兩個相鄰內容之間的間距。

堆疊視圖的使用方法很簡單:在界面編輯器(Interface Builder)中拖拽一個水平或垂直排布的堆疊視圖到畫布上,并放入內容。

如果一個內容有固有尺寸(intrinsic content size),在堆疊視圖中它會保持這個尺寸;如果沒有,界面編輯器會為其提供一個默認尺寸??s放后者,界面編輯器會自動為其添加尺寸約束。

通過屬性(Attributes)面板,修改堆疊視圖的屬性,微調布局。例如,下例中,間距為8pt,分布方式為均勻填充。

圖3

堆疊視圖在布局內容時,還會考慮內容視圖的內縮(content-hugging)和外擴(compression-resistance)優(yōu)先級,在尺寸(Size)面板中進行修改它們。

注意

為內容視圖添加約束,可以進一步調整布局;然而,要注意避免沖突:一般來說,在某個方向上,如果視圖的尺寸等同于固有尺寸,就可以添加約束。更多約束沖突的相關信息,詳見Unsatisfiable Layouts(無法滿足的約束)。

此外,堆疊視圖中還可以互相嵌套,構建更為復雜的布局。

圖4

總而言之,如果可能,盡量使用堆疊視圖進行布局。如若不能,再手動創(chuàng)建約束。

更多堆疊視圖的相關信息,詳見UIStackView Class ReferenceNSStack View Class Reference

注意

雖然巧妙使用堆疊視圖可以創(chuàng)建復雜界面,但仍無法完全回避手動創(chuàng)建約束。至少,我們需要通過約束定義堆疊視圖本身的位置。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容