特别说明,这是适合我自己的做法,其他人使用有可能引起不适,请在用过Masonry的人员陪同下观看。
用了Masonry,感觉写了一堆小圆点但是只是传递一两个参数用起来特别麻烦,所以就偷懒吧。
这些宏定义只能写在 mas_makeConstraints调用的block里面使用的,并且block参数变量名必须是make。
下面几个Align要这么理解:自己向谁对齐,自己的哪里向谁的哪里对齐。
比如:AlignLeft( toView, margin ) 意思是,自己向toView左对齐,并且间距为margin
又比如:TopAlignBottom(toView,margin) 意思是,自己的顶部向toView的底部对齐,并且间距为margin。
#define MakeHeight( h ) make.height.mas_equalTo((h))
#define MakeWidth( w ) make.width.mas_equalTo((w))
#define MakeSize( width,height) make.size.mas_equalTo(CGSizeMake((width), (height)))
#define AlignLeft( toView, margin) make.left.equalTo( (toView).mas_left ).with.offset((margin))
#define AlignRight( toView, margin) make.right.equalTo( (toView).mas_right ).with.offset((margin))
#define AlignTop( toView, margin) make.top.equalTo( (toView).mas_top ).with.offset((margin))
#define AlignBottom( toView, margin) make.bottom.equalTo( (toView).mas_bottom ).with.offset((margin))
#define BottomAlignTop( toView, margin) make.bottom.equalTo( (toView).mas_top ).with.offset((margin))
#define TopAlignBottom( toView, margin) make.top.equalTo( (toView).mas_bottom ).with.offset((margin))
#define LeftAlignRight( toView, margin) make.left.equalTo( (toView).mas_right ).with.offset((margin))
#define RightAlignLeft( toView, margin) make.right.equalTo( (toView).mas_left ).with.offset((margin))
#define HorizontalCenter( toView ) make.centerX.equalTo((toView))
#define VerticalCenter( toView ) make.centerY.equalTo((toView))
举例:
[labelAccount mas_makeConstraints:^(MASConstraintMaker *make) {
MakeSize(100, 40);
AlignLeft(self.view, 25);
AlignTop( self.view, 120);
}];
末了,建议将这些宏直接改写成MASConstraintMaker的方法(成员函数)比较好,那样用起来比较安全,我这么做比较危险。