面向过程、面向对象、响应式、面向协议、链式编程、函数式编程等
链式编程:通过点语法来串联操作,把多行代码连接成一行代码的形式
masnory:链式编程:
点语法带参数 例如 equlTo:
如果用带参数的block当做方法的返回值
例如:
-(void(^)(NSString*))play{
void(^block)(NSString*) = ^(NSString*str){
NSLog(@"%@",str);
};
returnblock;
}
调用时候:self.play(@"haha") 类似于 make.left..mas_equalTo(100);
几个重要的类:
一、UIView的扩展 MASAdditions
二、创建约束工厂的方法类 MASConstraintMaker
三、约束抽象类 MASConstraint
1、MASAdditions包含的一些属性 MASViewAttribute类型的mas_left、mas_top等。
MASViewAttribute(视图约束属性类)对NSLayoutAttribute进行了二次封装。
2、MASConstraintMaker包含的一些属性 MASConstraint类型的 left、top等。
MASConstraint(约束抽象类)
主要的方法:
处理约束组合,使用代理和面向对象的思想进行代码复用
- (MASConstraint *)constraint:(MASConstraint *)constraint addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute
tips: translatesAutoresizingMaskIntoConstraints
如果使用约束布局:translatesAutoresizingMaskIntoConstraints = NO translatesAutoresizingMaskIntoConstraints 的本意是将 frame 布局 自动转化为 约束布局,转化的结果是为这个视图自动添加所有需要的约束,如果我们这时给视图添加自己创建的约束就一定会约束冲突。为了避免上面说的约束冲突,我们在代码创建 约束布局 的控件时 直接指定这个视图不能用frame 布局(即translatesAutoresizingMaskIntoConstraints=NO),可以放心的去使用约束了。