美文网首页首页投稿(暂停使用,暂停投稿)iOS Developer
iOS 详解Swift 版的Masonry约束第三方库(一)

iOS 详解Swift 版的Masonry约束第三方库(一)

作者: 阿汤8阿义 | 来源:发表于2016-05-12 16:59 被阅读3782次

    这是一个约束的代码库,他的底层使用到了NSLayoutConstraint进行约束。那下面就对里面的代码进行一个解析。

    View+SnapKit这是一个扩展(就是我们oc中的分类)是我们使用这个库的入口。为什么会选用扩展做入口,这是为了让使用者使用时简单、简洁、明确,而且这样也对与开发者有一个很好的封装空间。

    ConstraintMaker这个类是具体操作约束的类,block的回调也是在这里执行。具体的方法

    通过block回掉后我们在外面拿到具体操作的对象,在通过这个对象我们将要约束的一些具体数据传输过去。

    在这里他使用了一个比较新颖的链式点语法。他为什么会选着这种方法,这是根据我们使用NSLayoutConstraint方法来决定的。(下面在做一个详细的说明)

    上面通过block回掉的了ConstraintMaker类,ConstraintMaker这个类包含了第一次的点语法所要使用的属性。每个属性是属于ConstraintDescriptionExtendable协议的,这样是为了实现get方法的能返回对象用来做下一次的点语法,get方法过程中会实例化下一个对象和传入类型并进行储存。(协议可以处理返回逻辑但不必知道具体返回什么类型,只要你继承协议就可以了,所以这样通过性非常大只要你是用于返回都可以使用)。

    通过block返回了ConstraintMaker类在调用这个类中的属性返回ConstraintDescription类,这个过程我称之为第一级。这一过程实际就是将ConstraintAttributes类中的normal存入到ConstraintDescription类中

    ConstraintMaker

    这一块是ConstraintAttributes类中的normal

    这一块是实例化ConstraintItem类在赋值到属性中

    将ConstraintItem中的数据在打包存入到ConstraintDescription

    这里在是将ConstraintDescription打包存入到数组中constraintDescriptions

    在这最上面是返回了一个ConstraintDescription有类的返回就可以做下一个事情了。

    先讲解到这里下面的下次在进行讲解

    相关文章

      网友评论

        本文标题:iOS 详解Swift 版的Masonry约束第三方库(一)

        本文链接:https://www.haomeiwen.com/subject/hcjprttx.html