UIStackView : UIView
UIStackViewAppleiOS9引入的一个视图容器控件,可以很好地减轻手写或者Xib中托约束带来的繁琐工作。和传统容器视图相比,有如下特点:

  • 类似ContainView,不会渲染到界面上
  • 子视图只能朝一个方向进行排布,要么水平要么垂直
  • 支持多层嵌套
  • 支持属性动画,不能滚动

api说明

配置布局 (Configuring The Layout)

  • alignment: UIStackViewAlignment 子视图的对齐方式

    1
    2
    3
    4
    5
    6
    7
    8
    // 子视图在排列的垂直方向上填充容器
    UIStackViewAlignmentFill
    // 子视图在排列方向上顶部对齐
    UIStackViewAlignmentTop
    // 子视图在排列方向上居中对齐
    UIStackViewAlignmentCenter
    // 子视图在排列方向上底部对
    UIStackViewAlignmentBottom
  • axis: UILayoutConstraintAxis 子视图是水平排布还是垂直排布

    1
    2
    3
    4
    // 水平排布
    UILayoutConstraintAxisHorizontal
    // 垂直排布
    UILayoutConstraintAxisVertical
  • distribution: UIStackViewDistribution 子视图的分布方式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // 子视图在排列方向上填满容器
    UIStackViewDistributionFill
    // 子视图在排列方向上填满容器,且按相等尺寸分布
    UIStackViewDistributionFillEqually
    // 子视图在排列方向上填满容器,且按照原始比例分布
    UIStackViewDistributionFillProportionally
    // 排列方向上子视图等间距
    UIStackViewDistributionEqualSpacing
    // 排列方向上子视图中心点之间的距离等间距
    UIStackViewDistributionEqualCentering
  • spacing: CGFloat 子视图之间的间距

子视图管理 (Managing Arranged Subviews)

1
2
3
4
5
6
// 添加
- addArrangedSubview:
// 插入
- insertArrangedSubview:atIndex:
// 删除
- removeArrangedSubview:

补充: 对子视图设置隐藏也会相应的改变该容器视图

添加自定义空间 (Adding Space Between Items)

1
2
3
4
5
6
7
8
// Returns the custom spacing after the specified view.
- customSpacingAfterView:
// Applies custom spacing after the specified view.
- setCustomSpacing:afterView:
// The default spacing for subviews within a stack view.
UIStackViewSpacingUseDefault
// The system-defined spacing to the neighboring view.
UIStackViewSpacingUseSystem