iOS 9 增加了一个类 UIStackView ,UIStackView 提供了一种新的管理子视图布局的方式,UIStackView 有点类似于前端的 <div></div>标签,可以将控件划分管理,我们可以把控件添加的UIStackView 里面进行分组。
使用 UIStackView 布局的时候,操作子视图会非常的方便我们来看一下效果图, demo 传送门
优势
如果上面效果我们 用之前的约束进行布局的话会非常复杂,在每添加一个控件都需要重新计算约束,如果新控件要插入已有的两个控件之间,我们还需要把这两个控件的约束删除,然后重新添加。想想还是挺复杂的,如果使用 StackView 的话处理这种问题就非常的简单了,我们只需要找到指定的 StackView ,然后插入想要的位置就可以了
教程
xcode 上提供了一种简单的方式对控件之间进行分组,如下图所示
选中在 storyboard 中选中 stackview 可以看到如下的设置项
Axis: 设置 UIStackView 的方向,Vertical 和 Horizontal。
Alignment: 子视图的排列方式
Spacing: 子视图之间的间隔
我们可以动态的给 StackView 添加子视图,通过如下代码
stackview.addArrangedSubview() //直接在最后面添加控件
stackview.insertArrangedSubview() //插入控件到指定位置
也可以动态的删除已有的视图,通过如下代码
stackview.removeArrangedSubview(view) //这里需要注意的是 我们还需要调用 view.removeFromSuperview(),把子视图重父视图删除