Masonry的使用
来源:互联网 发布:一事无成 知乎 编辑:程序博客网 时间:2024/05/29 02:02
三种添加约束的语法:
1. mas_makeConstraints:^(MASConstraintMaker *make){};
这个方法只会添加新的约束,如果重复执行会导致约束冲突。
2. mas_remakeConstraints:^(MASConstraintMaker *make){};
这个方法会将以前的所有约束删掉,添加新的约束。
3. mas_updateConstraints:^(MASConstraintMaker *make){};
这个方法将会覆盖以前的某些特定的约束。
语法示例:
make.size.equalTo(self.view).multipliedBy(0.5); // 被约束控件的宽高等于父控件宽高的一半
make.right.equalTo(self.view).offset(-20);// 被约束控件的右间距距离父控件右边20的距离
// make.right.offset(-20); 上面一行代码也可以简化成这样make.top.equalTo(self.view).offset(20);// 被约束控件的上间距距离父控件的顶部20的距离
make.edges.mas_equalTo(self.view).insets(UIEdgeInsetsMake(50,50, 50,50));
// edges表示该控件的四个边界,insets表示内边距,这行代码的意思是使被约束控件的四个边界等于父控件的四个边界加上四个边界值50,显示的效果就是控件的四边都距离父控件50的距离。
mas_equalTo和equalTo的区别:
mas_equalTo会对参数进行包装,equalTo不会对参数进行包装,所以mas_equalTo的功能强于equalTo。
约束的类型(举例):
1.尺寸:width/height/size
2.边界:left/leading/right/trailing/top/bottom
3.中心点:center/centerX/centerY
4.边界:edges
其他用法
利用Masonry写约束时,经常会纠结于要不要加mas_前缀,作者似乎也意识到了这个问题,所以提供了统一去掉mas_前缀的方法:
在导入头文件部分加上两个宏:
//这个宏加上后,可以去掉'mas_'这个前缀了
#define MAS_SHORTHAND
//这个宏加上后,可以去掉自动包装方法的'mas_'前缀
#define MAS_SHORTHAND_GLOBALS
//注意,这两个宏必须定义在这个头文件的上面,因为"Masonry.h"中要用到上面2个宏,如果已经定义过了的话
#import "Masonry.h"
如:
[blueView makeConstraints:^(MASConstraintMaker *make) {
}];make.width.mas_equalTo(self.view.mas_width).multipliedBy(0.5);
可以替换为
make.width.equalTo(self.view.width).multipliedBy(0.5);
这样是不是更优雅了。
两个控件相互关系
实现代码如下,效果是两个色块并排靠底部显示,宽和高都一样
#import "ViewController.h"
//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"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// 蓝色控件
UIView *blueView = [[UIViewalloc] init];
blueView.backgroundColor = [UIColorblueColor];
[self.viewaddSubview:blueView];
// 红色控件
UIView *redView = [[UIViewalloc] init];
redView.backgroundColor = [UIColorredColor];
[self.viewaddSubview:redView];
//添加蓝色的约束
[blueView makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.view.left).offset(20);
make.bottom.equalTo(self.view.bottom).offset(-20);
make.right.equalTo(redView.left).offset(-20);
make.top.equalTo(redView.top);
make.bottom.equalTo(redView.bottom);
make.height.equalTo(50);
make.width.equalTo(redView.width);
}];
// 添加红色的约束
[redView makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.view.right).offset(-20);
}];
}
@end
- Masonry的简单使用
- Masonry的使用
- Masonry+ScrollView的使用
- masonry的简单使用
- Masonry的使用
- Masonry框架的使用
- Masonry的使用
- iOS Masonry的使用
- masonry的简单使用
- Masonry的使用1
- Masonry的使用2
- Masonry的使用3
- Masonry的使用
- masonry的使用介绍
- masonry 的使用
- Masonry的使用
- Masonry的使用
- Masonry的使用(二)
- 欢迎大家来到霉老板的博客!
- 如何造出39元的智能插座?——小米智能插座拆解
- yum使用详解
- 前端直接调用OC的native方法
- android studio运行程序找不到class,java.lang.ClassNotFoundException: Didn't find class,完美解决!
- Masonry的使用
- Git使用教程
- 从今天起,开始记录一些关于Android的问题或者文章
- JavaScript闭包
- Cocos2d-JS 场景与层
- SVN linux下安装(服务端版本安装)
- jQueryx相关
- myeclipse测试数据库连接
- 预防接种禁忌症,儿童预防接种八不宜