IOS开发-Masonry

来源:互联网 发布:网络分销管理软件 编辑:程序博客网 时间:2024/05/29 03:55

Masonry是一个封装苹果Autolayout的一个第三方框架。简化了代码添加约束的代码量等。
下载地址:
https://github.com/SnapKit/Masonry
下载完后解压缩,把Masonry这个文件夹拖进项目里就可以了。

下面是一个小小的实例:
先导入头文件:

#import "Masonry/Masonry.h"
    UIView *buleView = [[UIView alloc]init];    [buleView setBackgroundColor:[UIColor blueColor]];    [self.view addSubview:buleView];    [buleView mas_makeConstraints:^(MASConstraintMaker *make) {        //大小        make.size.mas_equalTo(CGSizeMake(50, 50));        //位置:居中        make.center.mas_equalTo(self.view);    }];

运行一下,在屏幕中央就有一个50*50的蓝色小方块了。

Masonry里面几个约束的方法:

    [buleView mas_makeConstraints:^(MASConstraintMaker *make) {        //添加新约束    }];    [buleView mas_remakeConstraints:^(MASConstraintMaker *make) {        //会把以前的约束删除掉,添加新的约束    }];    [buleView mas_updateConstraints:^(MASConstraintMaker *make) {        //更新以前的约束    }];

引用Masonry文档的一个例子:
效果是一个view距离父控件上下左右都有10的边距。官方列举了两种写法,第二种直接一句话就能实现效果。
第一种:

UIEdgeInsets padding = UIEdgeInsetsMake(10, 10, 10, 10);[view1 mas_makeConstraints:^(MASConstraintMaker *make) {    make.top.equalTo(superview.mas_top).with.offset(padding.top); //with is an optional semantic filler    make.left.equalTo(superview.mas_left).with.offset(padding.left);    make.bottom.equalTo(superview.mas_bottom).with.offset(-padding.bottom);    make.right.equalTo(superview.mas_right).with.offset(-padding.right);}];

第二种:

[view1 mas_makeConstraints:^(MASConstraintMaker *make) {    make.edges.equalTo(superview).with.insets(padding);}];

到这里我们会碰到很多mas_前缀和没有这个前缀的东西,他们两个的区别就是带mas_前缀的是有对参数进行封装的,例如:
mas_equalTo(100)
equalTo(@100)
没有mas_前缀的就需要转类型,反之则不用。
如果要使这两个的效果等同,那么Masonry提供了两个宏给我们使用,但是需要注意的是,定义这个宏的时候,要在导入Masonry头文件之前,例如:

//define this constant if you want to enable auto-boxing for default syntax#define MAS_SHORTHAND_GLOBALS//define this constant if you want to use Masonry without the 'mas_' prefix#define MAS_SHORTHAND#import "Masonry/Masonry.h"

这样就可以了。

0 0