Auto Layout是iOS6发布后引入的一个全新的布局特性,弥补了以往autoresizing在布局方面的不足之处,适应更多屏幕尺寸的页面布局。下面就来说说自动布局的几种方式吧:
1.代码的方式(有两种形式)
1.1常规的约束方式
缺点:代码冗长
优点:能实现所有的约束方式以及特殊的约束方式
常用的方法是:
+(instancetype)constraintWithItem:(id)view1
attribute:(NSLayoutAttribute)attr1
relatedBy:(NSLayoutRelation)relation
toItem:(id)view2
attribute:NSLayoutAttribute)attr2
multiplier:(CGFloat)multiplier
constant:(CGFloat)c;
下面呢我就给大家分析一下各参数的意义:
1)view1:被约束的view
2)attr1:被约束的view的属性,例如:NSLayoutAttributeHeight(view的高度)
3)relation:被约束的view和相对于参照的view2的关系,例如NSLayoutRelationEqual(=)
4)attr2:参照的view2的属性,属性同atttr1
5)multiplier:被约束的view的指定属性是参照的view2制定属性的多少倍,公式:
view1.attr1 [= , >= , <=] view2.attr2 * multiplier + c;
6)c:参数
参考代码如下:
1.2可视化格式语言
缺点:不能满足所有的约束
优点:一次性可创建多个约束,容易理解,但是需要开发人员熟悉这种语言的规则
常用的方法是:
+ (NSArray *)constraintsWithVisualFormat:(NSString *)format
options:(NSLayoutFormatOptions)opts
metrics:(NSDictionary *)metrics
views:(NSDictionary *)views;
参数说明:
1)format:约束语句
2)opts:约束属性(例如:对齐功能)
3)metrics:参数
4)views:参与约束的字典对象
下面给大家说一下约束语句的组成及写法:
符号组成:
V: (表示垂直)
H: (表示水平)
| (父视图)
- (距离)
>= <= == (间距大于等于)
常用的语句:
1.|-[view]-| : 视图处在父视图的左右边缘内
2.|-[view] : 视图处在父视图的左边缘
3.|[view] : 视图和父视图左边对齐
4.-[view]- : 设置视图的width和height
5.|-20.0-[view]-30.0-| : 离父视图左边缘20,右边缘30
6.[view(100.0)] : 视图的宽度为100
7.|-[view(view1)]-[view1]-| : 视图宽度一样,并且在父视图左右边缘内
8.V:|-[view(100.0)] : 视图高度为100
9.[view(>=100@300)] : 视图的宽度最少为100,最大为300
10.V:|-(==space)-[view1]->=0-[view2]-(==space)-| : 离父视图的距离为space,view1和view2的间距大于 0并且距离底部父视图space
注意:未标明方向时,默认为水平方向
因为本人不用这种布局方式,所以就不给大家列举代码了,了解下就可以了,毕竟现在追求的是尽量少代码高效率,小伙伴们期待我更新xib自动布局吧,嘿嘿,希望大家多多提建议哈,一起进步。