Masonry是AutoLayout的一个第三方类库,用链式语法封装了冗长的AutoLayout代码
基本的计算公式:
控件左边 = 参考控件的右边 + 偏移值(5) (控件在参考控件的右边,距离其5px)
make.left.equalTo(view.superview.mas_right).offset(10);//不填则默认对应left,其他同理
常用属性
名称 |
autolayout 对应属性 |
意义 |
left |
NSLayoutAttributeLeft |
左边框 |
top |
NSLayoutAttributeTop |
上边框 |
right |
NSLayoutAttributeRight |
右边框 |
bottom |
NSLayoutAttributeBottom |
下边框 |
centerX |
NSLayoutAttributeCenterX |
center的X坐标 |
centerY |
NSLayoutAttributeCenterY |
center的Y坐标 |
width |
NSLayoutAttributeWidth |
宽度 |
height |
NSLayoutAttributeHeight |
高度 |
名称 |
autolayout 对应属性 |
意义 |
leading |
NSLayoutAttributeLeading |
正常情况下等同于left |
trailing |
NSLayoutAttributeTrailing |
正常情况下等同于right |
baseline |
NSLayoutAttributeBaseline |
对齐基线 |
leftMargin |
NSLayoutAttributeLeftMargin |
左边的Margin |
rightMargin |
NSLayoutAttributeRightMargin |
右边的Margin |
topMargin |
NSLayoutAttributeTopMargin |
顶部的Margin |
bottomMargin |
NSLayoutAttributeBottomMargin |
底部的Margin |
leadingMargin |
NSLayoutAttributeLeadingMargin |
前导(基本等于left)Margin |
trailingMargin |
NSLayoutAttributeTrailingMargin |
后尾(基本等于tail)Margin |
centerXWithinMargins |
NSLayoutAttributeCenterXWithinMargins |
中心X坐标Margin |
centerYWithinMargins |
NSLayoutAttributeCenterYWithinMargins |
中心Y坐标Margin |
约束方法
调用方式 |
参数 |
意义 |
mas_makeConstraints |
|
第一次生成约束使用 |
mas_updateConstraints |
|
更新其中的约束 |
mas_remakeConstraints |
|
重新生成约束,会将之前的所有约束先去掉 |
- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedItemLength:(CGFloat)fixedItemLength leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing |
|
item宽度确定。自适应间距 |
- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedSpacing:(CGFloat)fixedSpacing leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing |
|
间距确定,自适应宽度 |
设置偏移
调用方式 |
参数 |
效果 |
insets(MASEdgeInsets insets) |
MASEdgeInsets |
设置view的四边缩小大小,等于缩放效果 |
sizeOffset(CGSize offset) |
CGSize |
frame的size相当于参考量的偏移大小,参考view的size的偏移量,正数为放大,负数为缩小
|
centerOffset(CGPoint offset) |
CGPoint |
center相对于参考量的偏移大小,参考view的中心点的偏移量
|
offset(CGFloat offset) |
CGFloat |
所指属性相对于参考量的偏移大小 |
关系计算
调用方式 |
参数 |
效果 |
equalTo(id attr) |
CGFloat |
设置属性等于某个数值,mas_equalTo
|
greaterThanOrEqualTo((id attr)) |
CGFloat |
设置属性大于或等于某个数值 |
lessThanOrEqualTo(id attr) |
CGFloat |
设置属性小于或等于某个数值 |
multipliedBy(CGFloat multiplier) |
CGFloat |
设置属性乘以因子后的值 |
dividedBy(CGFloat divider) |
CGFloat |
设置属性除以因子后的值 |
连词
调用方式 |
参数 |
效果 |
with |
id |
链式语法中,and 以及 with都是修饰性语句,不做任何事情,可省略 |
and |
id |
链式语法中,and 以及 with都是修饰性语句,不做任何事情,可省略 |
要点1:
mas_makeConstraints:这个方法中谁调用该方法,谁就是make
要点2:
equalTo后面的参数是id类型,所以这里需要将常量包装成对象,如果是数值,前面加@,比如@10,@50 ;mas_equalTo可以自动将后面的常量参数包装成对象 ,不需要@;**mas_equalTo是equalTo对其参数进行了一个BOX操作(装箱),比较的是值,equalTo比较的是view
**。
make.width.equalTo(@100);
make.height.mas_equalTo(150);
要点3:
greenView上边 = 相对控件 * 常数a + 常量b(实际上因为是乘以1倍,可以省略multipliedBy(1.0))
要点4:
在使用Masonry时,有mas_left与mas_leading,同样有mas_right与mas_trailing,在中国都习惯左、右布局,使用left/right与heading/trailing是一样的。但是,在其它部分国家,开发者们的习惯不都是左、右或者前、后布局,还有右、左或者后、前布局的,因此是不一样的。
要点5:sizeOffset是对frame的size相当于参考view的偏移大小,参考view的size的偏移量,正数为放大,负数为缩小。
centerOffset是对view的中心点相当于参考view中心点的偏移大小,参考view的中心点的偏移量,正数为右下侧,负数为左上。
make.size.equalTo(self.yellowView).sizeOffset(CGSizeMake(20, 20));
make.center.equalTo(self.greenView).centerOffset(CGPointMake(0, 200));