UIStackView相关属性了解使用

2018-11-02  本文已影响0人  小秀秀耶

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详解

参考文章

使用Storyboard了解UIStackView

stackView的distribution详解

UIStackView体验

iOS中UIStackView相关属性理解

上一篇下一篇

猜你喜欢

热点阅读