UIStackView主要包括了四大屬性:axis、alignment、distribution、spacing
- axis
設(shè)置UIStackView布局的方向:水平方向或垂直方向
typedef NS_ENUM(NSInteger, UILayoutConstraintAxis) {
UILayoutConstraintAxisHorizontal = 0,
UILayoutConstraintAxisVertical = 1
};
- alignment
主要設(shè)置非軸方向子視圖的對(duì)齊方式
typedefNS_ENUM(NSInteger,UIStackViewAlignment) {
UIStackViewAlignmentFill,//子視圖填充
StackViewUIStackViewAlignmentLeading,//子視圖左對(duì)齊(axis為垂直方向而言)
UIStackViewAlignmentTop=UIStackViewAlignmentLeading,//子視圖頂部對(duì)齊(axis為水平方向而言)
UIStackViewAlignmentFirstBaseline,// 按照第一個(gè)子視圖的文字的第一行對(duì)齊,同時(shí)保證高度最大的子視圖底部對(duì)齊(只在axis為水平方向有效)
UIStackViewAlignmentCenter,//子視圖居中對(duì)齊
UIStackViewAlignmentTrailing,//子視圖右對(duì)齊(axis為垂直方向而言)
UIStackViewAlignmentBottom=UIStackViewAlignmentTrailing,//子視圖底部對(duì)齊(axis為水平方向而言)
UIStackViewAlignmentLastBaseline,// 按照最后一個(gè)子視圖的文字的最后一行對(duì)齊,同時(shí)保證高度最大的子視圖頂部對(duì)齊(只在axis為水平方向有效)
}NS_ENUM_AVAILABLE_IOS(9_0);
- distribution
設(shè)置軸方向上子視圖的分布比例(如果axis是水平方向,也即設(shè)置子視圖的寬度,如果axis是垂直方向,則是設(shè)置子視圖的高度)
UIStackViewDistributionFill = 0, 軸方向上填充UIStackView
UIStackViewDistributionFillEqually, 所有子視圖在軸方向上等寬或等高
UIStackViewDistributionFillProportionally, 根據(jù)原先子視圖的比例來(lái)拉伸或壓縮子視圖的寬或高
UIStackViewDistributionEqualSpacing, 保持子視圖的寬高,所有子視圖中間的間隔保持一致
UIStackViewDistributionEqualCentering, 控制所有子視圖的中心之間的距離保持一致
- spacing
該屬性控制子視圖之間的間隔大小,在distribution前三個(gè)屬性值設(shè)置的情況下,子視圖之間是沒(méi)有間隔,我們可以通過(guò)spacing屬性顯式的設(shè)置,如下圖在distribution=UIStackViewDistributionFillEqually情況下,設(shè)置子視圖間隔為10,子視圖之間間隔都為10,且子視圖依然等寬