Masonry使用注意事项

一 常用方法介绍

 masonry 自动帮我们把 autoresizing给禁用掉

这两个宏定义要放到导入头文件之前

//define this constant if you want to use Masonry without the 'mas_' prefix

#define MAS_SHORTHAND

//define this constant if you want to enable auto-boxing for default syntax

#define MAS_SHORTHAND_GLOBALS

// 导入头文件

#import "Masonry.h"

创建约束      makeConstraints:

更新约束 (只会对指定的约束进行更新)         updateConstraints:

重设约束 (是会把之前的约束都清空掉, 然后应用新的约束)         remakeConstraints:

优先级的设置            make.height.equalTo(40).priority(10);

二 使用示例

#define kSmallMargin5

 // remakeConstraints   如果在之前设置过有冲突,就用这个方法重置


第一种方式

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

// make就相当于redView,要做约束的时候,都需要针对make来做

//顶部的约束

make.top.mas_equalTo(self.view.mas_top).offset(20);

//右侧的约束

make.right.mas_equalTo(self.view.mas_right).offset(-20);

//左侧的约束

make.left.mas_equalTo(self.view.mas_left).offset(20);

//高度的约束

make.height.mas_equalTo(40);

}];


第二种方式

如果被约束view的属性和参照view的属性一致的话,就可以把参照view的属性给省略掉

equalTo() :不能自动转换类型(自动装箱)

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

make.top.equalTo(self.view).offset(20);

make.left.equalTo(self.view).offset(20);

make.right.equalTo(self.view).offset(-20);

// equalTo不会自动的把基本数据类型,转为id

make.height.equalTo(@40);

}];


第三种方式

如果被约束的view和参照view是父子关系,可以把参照view给省略掉(属性也要一致)

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

make.top.offset(20);

make.left.offset(20);

make.right.offset(-20);

make.height.equalTo(@40);

}];


第四种方式

如果不同属性设置的约束是相同的,就可以通过.语法进行链接

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

//make.top.left.offset(20);

make.top.and.left.offset(20);

make.right.offset(-20);

make.height.equalTo(@40);

}];


第五种写法

可以针对内边距进行设置

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

NSValue *edges = [NSValue valueWithUIEdgeInsets:UIEdgeInsetsMake(20, 20, 20, 20)];

make.edges.equalTo(edges);

}];


第六种写法

一旦定义完之后,就可以实现类型的自动转换

#define MAS_SHORTHAND_GLOBALS

[redView mas_makeConstraints:^(MASConstraintMaker *make) {

make.edges.equalTo(UIEdgeInsetsMake(20, 20, 20, 20));

}];

#define MAS_SHORTHAND可以省略掉mas_前缀

[redView makeConstraints:^(MASConstraintMaker *make) {

make.top.left.offset(20);

make.right.offset(-20);

make.height.equalTo(40);

}];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS_autoLayout_Masonry 概述 Masonry是一个轻量级的布局框架与更好的包装AutoLay...
    指尖的跳动阅读 4,946评论 1 4
  • (一)Masonry介绍 Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布...
    木易林1阅读 7,046评论 0 3
  • Masonry是一个轻量级的布局框架,拥有自己的描述语法,采用更优雅的链式语法封装自动布局,简洁明了并具有高可读性...
    3dcc6cf93bb5阅读 5,812评论 0 1
  • 1 我出生那年,我大姐季雨大学毕业。 大姐找了很不错的工作,高薪体面,成了全村人教育小朋友的模范...
    Yi冬无雪阅读 2,615评论 0 2
  • 外国人的脑洞经常开的很大,创意无限。这是一个外国妈妈为他女儿设计的”服装”,用到了西瓜,草莓,蔬菜,花朵等等元素,...
    Lonelyboy1阅读 3,621评论 0 0