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,这两个方法其实没有做任何操作,方法只是返回对象本身,这这个方法的左右完全是为了方法写的时候的可读性
网友评论