什么是Autolayout
- Autolayout是一种“自动布局”技术,专门用来布局UI界面的
- Autolayout自iOS6开始引入,由于Xcode4的不给力,当时并没有得到很大推广
- 自iOS7(Xcode5)开始,Autolayout的开发效率得到很大的提升
- 苹果官方也推荐开发者尽量使用Autolayout来布局UI界面
- Autolayout能很轻松地解决屏幕适配的问题
1.简介
-
Autoresizing
- 在Autolayout之前,有Autoresizing可以作屏幕适配,但局限性较大,有些任务根本无法完成
相比之下,Autolayout的功能比Autoresizing强大很多
-
Autolayout的2个核心概念
- 参照
- 约束
2.Autolayout常用面板
3.Autolayout的警告和错误
- 警告
- 控件的frame不匹配所添加的约束,比如
- 比如约束控件的宽度为100,而控件现在的宽度是110
- 错误
- 缺乏必要的约束,比如
- 只约束了宽度和高度,没有约束具体的位置
4.代码实现Autolayout
- 代码实现Autolayout的步骤
- 利用NSLayoutConstraint类创建具体的约束对象
- 添加约束对象到相应的view上
- (void)addConstraint:(NSLayoutConstraint *)constraint;
- (void)addConstraints:(NSArray *)constraints;
- 代码实现Autolayout的注意点
- 要先禁止autoresizing功能,设置view的下面属性为NO
view.translatesAutoresizingMaskIntoConstraints = NO;
- 添加约束之前,一定要保证相关控件都已经在各自的父控件上
- 不用再给view设置frame
5.NSLayoutConstraint
- 一个NSLayoutConstraint对象就代表一个约束
- 创建约束对象的常用方法
+(id)constraintWithItem:(id)view1 attribute (NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;
- view1:要约束的控件
- attr1:约束的类型(做怎样的约束)
- relation:与参照控件之间的关系
- view2:参照的控件
- attr2:约束的类型(做怎样的约束)
- multiplier:乘数
- c:常量
6.自动布局的核心计算公式
- 自动布局的核心计算公式
obj1.property1 =(obj2.property2 * multiplier)+constant value