Masonry

1、什么是Masonry

Masonry是一个轻量级的布局框架。采用链式语法封装自动布局,简洁明了并具有高可读性,而且同时支持iOS和mac os。

2、使用

mas_makeConstraints给view添加约束。约束有几种,分别是边距,宽,高,左上右下距离,基准线。添加后可以修正,修正有offset(位移)和multipliedBy(倍率)修正。

语法一般是(三种关系)make.equalTo(等于) or make.greaterThanOrEqualTo(大于) or make.lessThanOrEqualTo(小于)+ 倍数或位移修正。

   基本的属性设置

/**

1.尺寸:width、height、size

2.边界:left、leading、right、trailing、top、bottom

3.中心点:center、centerX、centerY

4.边界:edges

5.偏移量:offset、insets、sizeOffset、centerOffset

6.priority()约束优先级(0-1000),multipler乘因数、dividedBy除因数

Masonry有三个最基本的使用方法

/** 添加约束 

只负责新增约束 Autolayout不能同时存在两条针对于同一对象的约束 否则会报错

*/

[view mas_makeConstraints:<#^(MASConstraintMaker *make)block#>]

/** 更新特定的约束

针对上面的情况 会更新在block中出现的约束 不会导致出现两个相同约束的情况

 */

[view mas_updateConstraints:<#^(MASConstraintMaker *make)block#>]

/** 重置所有的约束

则会清除之前的所有约束 仅保留最新的约束

 */

[view mas_remakeConstraints:<#^(MASConstraintMaker *make)block#>]

make.edges.equalTo(self.view).with.insets(UIEdgeInsetsMake(10, 10, 10, 10));

等同于

{

//  make.left.equalTo(self.view).with.offset(10);

//  make.right.equalTo(self.view).with.offset(-10);

//  make.top.equalTo(self.view).with.offset(10);

//  make.bottom.equalTo(self.view).with.offset(-10);

}

可以看到 edges 其实就是top,left,bottom,right的一个简化

iOS里有一个方法是用来更新或者增加约束时调用的

-  (void)updateConstraints {    [self.growingButton mas_updateConstraints:^(MASConstraintMaker *make) {       

 //...}];  

  //这个父类方法一定要调用,不然会报错  

  [super updateConstraints];

}

如果你想主动调用这个系统方法

[self.btn setNeedsUpdateConstraints];

告诉系统,需要改变约束。

如果需要实现动画,就需在动画里面执行

[self.btn layoutIfNeed];

http://blog.csdn.net/qq_33351410/article/details/52689522      //Masonry的使用总结

3、注意事项

 布局控件必须加入到父控件中。

masequalto和equalTo的区别:前者比后者多了类型转换功能,大多数时候两个方法是通用的。对于数值元素使用mas_equalTo。对于对象或者是多个属性的处理用equalTo,特别是多属性时必须用。例如make.left.and.right.equalTo(self.view);mas_equalTo所支持的类型除了NSNumber支持的那些数值类型之外就只支持CGPoint  CGSize  UIEdgeInsets

方法with和and,这两个方法其实没有做任何操作,方法只是返回对象本身,这这个方法的左右完全是为了方法写的时候的可读性

你可能感兴趣的:(Masonry)