ios中的纯代码自动布局的简要分析

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]-    :  设置视图的widthheight

     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自动布局吧,嘿嘿,希望大家多多提建议哈,一起进步。








     


view1.attr1 [= , >= , <=] view2.attr2 * multiplier + c;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值