在 iOS9 中,Apple 引入了 UIStackView,他让你的应用可以通过简单的方式,纵向或横向的叠放你的 views。UIStackView 采用 auto layout 的方式来管理他的子视图的位置和尺寸。让你更简单的构建自适应的 UI。
如果在 iOS9 之前,你想要创建类似 UIStackView 为你提供的这种布局,你需要构建大量的 constraints。你需要编辑许多诸如边距、高度、x/y 轴的位置,还有它们的依赖关系等。
UIStackView 把这些全部帮你做了。甚至在你添加或者移除某些 view 时,还提供了平滑的动画。当 view 状态改变时,他会自动的改变 layout 的属性值。
UIStackView几个重要的属性:
.axis(轴向) 属性决定了 stack 的朝向,只有垂直或水平;
·distribution(分布) 属性决定了其管理的视图在沿着其轴向上的布局;
·alignment(对齐) 属性决定了其管理的视图在垂直于其轴向上的布局;
·spacing(空隙) 属性决定了其管理的视图间的最小间隙;
·baselineRelativeArrangement属性决定了其视图间的垂直间隙是否根据基线测量得到;
·layoutMarginsRelativeArrangement属性决定了 stack 视图平铺其管理的视图时是否要参照它的布局边距
1.对齐方式
StackView可以设置子视图的对齐方式(水平方向和垂直方向的该属性值有所区别):
Fill:子视图填充StackView。
Leading:靠左对齐。
Trailing:靠右对齐。
Center:子视图以中线为基准对齐。
Top:靠顶部对齐。
Bottom:靠底部对齐。
First Baseline:按照第一个子视图中文字的第一行对齐。
Last Baseline:按照最后一个子视图中文字的最后一行对齐。
2.分布比例
Fill:默认分布方式。
Fill Equally:子视图的高度或宽度保持一致。
Fill:Proportionally:StackView自己计算出它认为合适的分布方式。
Equal Spacing:子视图保持同等间隔的分布方式。
Equal Centering:每个子视图中心线之间保持一致的分布方式。