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

这是一个约束的代码库,他的底层使用到了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有类的返回就可以做下一个事情了。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容