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