iOS 9
提供的UIStackView
简化了布局操作,用于平铺一行或者一列的的视图组合,它有些像Android中的liner layout
例如:实现一行有三个图片,某种情况下变成两个,只需要将三个图片放入UIStackView
,将其中一个图片隐藏即可实现,无需修改任何约束
UIStackView
继承自UIView
,但其实一个视图容器,是一个不会被渲染的UIView
的子类,这意味着设置其backgroundColor
和重载drawRect
方法都不会产生任何效果,它会对它的子视图根据一定规则自动布局
快速了解UIStackView
参考 使用Storyboard了解UIStackView
有如下几个比较重要的属性:
1、axis:定义subview的排布方式(水平还是垂直)
2、alignment:定义subview对齐方式
3、distribution:定义subview的分布方式
4、spacing: 定义subview间的最小间距。
axis
UILayoutConstraintAxisHorizontal = 0, 水平排布
UILayoutConstraintAxisVertical = 1 垂直排布
alignment
UIStackViewAlignmentFill,//子视图填充StackView
UIStackViewAlignmentLeading,//子视图左对齐(axis为垂直方向而言)
UIStackViewAlignmentTop = UIStackViewAlignmentLeading,//子视图顶部对齐(axis为水平方向而言)
UIStackViewAlignmentFirstBaseline, // 按照第一个子视图的文字的第一行对齐,同时保证高度最大的子视图底部对齐(只在axis为水平方向有效)
UIStackViewAlignmentCenter,//子视图居中对齐
UIStackViewAlignmentTrailing,//子视图右对齐(axis为垂直方向而言)
UIStackViewAlignmentBottom = UIStackViewAlignmentTrailing,//子视图底部对齐(axis为水平方向而言)
UIStackViewAlignmentLastBaseline, // 按照最后一个子视图的文字的最后一行对齐,同时保证高度最大的子视图顶部对齐(只在axis为水平方向有效)
distribution
UIStackViewDistributionFill//子视图填满父视图
UIStackViewDistributionFillEqually//使所有子视图在轴方向上等宽或等高
UIStackViewDistributionFillProportionally//根据原先子视图的比例来拉伸或压缩子视图的宽或高
UIStackViewDistributionEqualSpacing//所有子视图中间的间隔保持一致
UIStackViewDistributionEqualCentering//所有子视图的中心之间的距离保持一致
但是我们stackView
有可能没有设置Frame
,此时设置distribution
还比较复杂,可以参考stackView的distribution详解
参考文章
网友评论