Masonry之 make.height.equalTo(@20)调用流程

Masonry调用流程

constraint参数传递nil的时候,创建一个新的MASContraint对象,并且设置代理、加入到数组当中去

make.height 返回一个上图的MASContraint对象 newContraint

继续调用make.height.equalTo(@20)

该方法为基类抽象对象MASConstraint方法,返回一个block,可以查看 equalToWithRelation 方法,返回的仍然是一个block;(注意,这个方法在基类MASConstraint并没有做任何实现,而在子类MASViewContraint和MASCompositeContraint有实现,下图讨论的是前者)

这就可以解释make.height.equalTo(@20) 中的 equalTo(@20)可以执行(实际上就是一个block带参数的调用);

由于attribute传递的是@20,一个NSNumber对象,简写代码如下:

self.layoutRelation设置枚举值,并且将变量hasLayoutRelation设置为YES(待会有用)

self.secondViewAttribute的方法,由于传递的是@20,一个NSNumber对象,代码简写如下

NSNumber继承自NSValue, 所以这里直接设置了offset的值为20

MASViewContraint 有个方法,实际上是设置layoutConstant

self.layoutConstant是一个私有方法, 设置layoutConstant变量值,同时更新layoutConstraint的constant的值;

你可能感兴趣的:(Masonry之 make.height.equalTo(@20)调用流程)