Masonry是一款强大iOS第三方约束类库。
它的内部原理是什么呢!
它充分的利用了链式编程思想和函数式编程思想进行编程!所有属性都是通过使用点语法来点出来!
它通过调用Block来进行编程:通过一个Mas_makeConstraints:^(NSconstraintsMaker *make)block;
这个masonry 主要是通过这个约束制造者来进行约束!
通过调用这个Block然后去去内部调用下一级!
Masonry主要,通过这个Block 的调用!需要注意的是!在我们使用Masonry的时候Masonry会帮我们做一件事,会把系统的translatesAutoresizingMaskConstraints设置为NO!
Masonry 在内部会首先帮我们创建一个约束制造者!
然后在调用Block(constraintMaker)
- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block {
self.translatesAutoresizingMaskIntoConstraints = NO;
MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self];
block(constraintMaker);
return [constraintMaker install];
}
也就是这个方法,它会返回一个数组。把我们外面写好的约束数组给我们返回到内部然后进行处理!
它的具体步骤是:
- 首先会创建一个约束制造者然,并且绑定控件!
- 执行mas_makeConstraints:传入进行Block
- 让约束制造者安装约束!
安装的时候步骤是:
1、首先会清除以前的约束
2、然后把传入数组遍历一遍然吧吧约束安装