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的值;
网友评论