先提供几个文档参考下:
官方文档
翻译文档
参考教程
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
等一系列新增工具,都可以看出苹果在自动布局方面的发展。自动布局也逐步变成一个必要的方案。那这些新增的工具自然也是必须掌握的。