Masonry使用

Masonry一些常用的属性Masonry使用_第1张图片

//从此以后基本可以抛弃CGRectMake了 

UIView *sv = [UIView new]; 

//在做autoLayout之前 一定要先将view添加到superview上 否则会报错 

[self.view addSubview:sv]; 

//mas_makeConstraints就是Masonry的autolayout添加函数 将所需的约束添加到block中行了 

[sv mas_makeConstraints:^(MASConstraintMaker *make) { 

        //将sv居中(很容易理解吧?)    

              make.center.equalTo(ws.view);        

        //将size设置成(300,300)    

        make.size.mas_equalTo(CGSizeMake(300, 300)); 

}]; 

 /* mas_makeConstraints 只负责新增约束 Autolayout不能同时存在两条针对于同一对象的约束 否则会报错                 mas_updateConstraints 针对上面的情况 会更新在block中出现的约束 不会导致出现两个相同约束的情况                 mas_remakeConstraints 则会清除之前的所有约束 仅保留最新的约束 

    三种函数善加利用 就可以应对各种情况了 

*/ 

 其次 equalTo 和 mas_equalTo的区别在哪里呢? 其实 mas_equalTo是一个MACRO

#define mas_equalTo(...)                 equalTo(MASBoxValue((__VA_ARGS__))) 

#define mas_greaterThanOrEqualTo(...)    greaterThanOrEqualTo(MASBoxValue((__VA_ARGS__))) 

#define mas_lessThanOrEqualTo(...)       lessThanOrEqualTo(MASBoxValue((__VA_ARGS__))) 

#define mas_offset(...)                  valueOffset(MASBoxValue((__VA_ARGS__)))

可以看到 mas_equalTo只是对其参数进行了一个BOX操作(装箱) MASBoxValue的定义具体可以看看源代码 太长就不贴出来了所支持的类型 除了NSNumber支持的那些数值类型之外 就只支持CGPoint CGSize UIEdgeInsets介绍完这几个问题 我们就继续往下了 

PS:刚才定义的sv会成为我们接下来所有sample的superView


你可能感兴趣的:(masonry)