UIStackView主要包括了四大属性:axis
、alignment
、distribution
、spacing
- axis
设置UIStackView布局的方向:水平方向或垂直方向
typedef NS_ENUM(NSInteger, UILayoutConstraintAxis) {
UILayoutConstraintAxisHorizontal = 0,
UILayoutConstraintAxisVertical = 1
};
- alignment
主要设置非轴方向子视图的对齐方式
typedefNS_ENUM(NSInteger,UIStackViewAlignment) {
UIStackViewAlignmentFill,//子视图填充
StackViewUIStackViewAlignmentLeading,//子视图左对齐(axis为垂直方向而言)
UIStackViewAlignmentTop=UIStackViewAlignmentLeading,//子视图顶部对齐(axis为水平方向而言)
UIStackViewAlignmentFirstBaseline,// 按照第一个子视图的文字的第一行对齐,同时保证高度最大的子视图底部对齐(只在axis为水平方向有效)
UIStackViewAlignmentCenter,//子视图居中对齐
UIStackViewAlignmentTrailing,//子视图右对齐(axis为垂直方向而言)
UIStackViewAlignmentBottom=UIStackViewAlignmentTrailing,//子视图底部对齐(axis为水平方向而言)
UIStackViewAlignmentLastBaseline,// 按照最后一个子视图的文字的最后一行对齐,同时保证高度最大的子视图顶部对齐(只在axis为水平方向有效)
}NS_ENUM_AVAILABLE_IOS(9_0);
- distribution
设置轴方向上子视图的分布比例(如果axis是水平方向,也即设置子视图的宽度,如果axis是垂直方向,则是设置子视图的高度)
UIStackViewDistributionFill = 0, 轴方向上填充UIStackView
UIStackViewDistributionFillEqually, 所有子视图在轴方向上等宽或等高
UIStackViewDistributionFillProportionally, 根据原先子视图的比例来拉伸或压缩子视图的宽或高
UIStackViewDistributionEqualSpacing, 保持子视图的宽高,所有子视图中间的间隔保持一致
UIStackViewDistributionEqualCentering, 控制所有子视图的中心之间的距离保持一致
- spacing
该属性控制子视图之间的间隔大小,在distribution前三个属性值设置的情况下,子视图之间是没有间隔,我们可以通过spacing属性显式的设置,如下图在distribution=UIStackViewDistributionFillEqually情况下,设置子视图间隔为10,子视图之间间隔都为10,且子视图依然等宽