先提供几个文档参考下:
UIStackView 是 iOS 9 中新增的一个视图,用来管理一行或一列视图的组合。
虽然UIStackView
继承自UIView
,但UIView
的很多属性和方法对UIStackView
并不起作用。相反的,UIStackView
新增了几个独特的属性,而它也正是通过这些属性来管理位于其上的子视图。一旦UIStackView
的这些属性发生变化,它的子视图就会被重新排布。
这里不打算对UIStackView
的所有属性以及用法做详细的讨论,只是想简单地总结下使用UIStackView
的好坏。
首先,iOS 8 不支持UIStackView
,所以如果你想要兼容 iOS 8,基本就不用考虑这个方案,不然维护成本直接就翻了一倍。
除去这个缺点,我已经想不到其他不使用UIStackView
的理由了。
-
减少自定义约束。 在
Interface Builder
上使用Autolayout
后,基本上整个界面上约束乱飞,杂乱无章,管理也十分麻烦。而UIStackView
能够自动管理它内部的约束,这样大部分的约束也因此被自动解决了,只要嵌套好UIStackView
,就可以用很少的约束达到自动布局界面的目的。 -
手写界面代码。 手写界面代码在自动布局方面一直都是弱项,但
UIStackView
对自动布局的支持,为手写代码减少了极大的工作量和维护成本。只要把视图分层包装好,通过设置UIStackView
的属性,就可以自动布局整个界面了。 -
层次关系。
UIStackView
使得界面控件之间的关系再一次缕清,虽然这不是重点。
从 iOS 8 的 Size Class
,到 iOS 9 中的分屏功能和UIStackView
等一系列新增工具,都可以看出苹果在自动布局方面的发展。自动布局也逐步变成一个必要的方案。那这些新增的工具自然也是必须掌握的。