iOS 布局:自动布局与约束详解
1. 自动布局与自动调整大小
当自动调整大小(autoresizing)不足以实现所需的布局效果时,有两种选择:
- 结合手动布局 :在 layoutSubviews
方法中结合自动调整大小和手动布局。自动调整大小会在 layoutSubviews
调用之前进行,因此可以在 layoutSubviews
代码中对自动调整大小未处理好的部分进行调整。
- 使用自动布局(Autolayout) :自动布局实际上是向 layoutSubviews
注入功能的一种方式。使用自动布局比编写自己的 layoutSubviews
代码要容易得多。
自动布局是一种可选技术,每个视图都可以独立选择是否使用。可以在同一界面的不同区域同时使用自动调整大小和自动布局,甚至同一视图的不同子视图也可以有不同的选择。但自动布局是通过父视图链实现的,如果一个视图使用了自动布局,那么它的所有父视图都会自动使用;如果其中一个视图是视图控制器的主视图,该视图控制器将接收与自动布局相关的事件。
视图通过与约束关联来选择使用自动布局。约束是告诉自动布局引擎对视图进行布局以及如何布局的方式。
2. 约束的基本概念
自动布局约束(autolayout constraint)是 NSLayoutConstraint
实例,它可以描述视图的绝对宽度或高度,也可以描述一个视图的属性与