Masonry基本用法
来源:互联网 发布:电脑无法上淘宝视频 编辑:程序博客网 时间:2024/05/21 23:43
Masonry用法上也比较简单灵活,很大程度上替代了传统的NSLayoutConstraint布局方式,是目前最流行的AutoLayout框架.
一、Masonry基本知识:
1.Masonry会自动调用view.translatesAutoresizingMaskIntoConstraints=NO;
2.属性 left/right/top/bottom/size/height/width/CenterY 等对齐属性不能设置固定值,但可以设置和superview的相对值
3.三种尺寸关系:
equalTo = NSLayoutRelationEqual
lessThanOrEqualTo = NSLayoutRelationLessThanOrEqual//小于等于
greaterThanOrEqualTo = NSLayoutRelationGreaterThanOrEqual//大于等于
4.使用makeConstraints、updateConstraints和remakeConstraints
-(NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block;
-(NSArray*)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block ;
-(NSArray*)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block ;
mas_makeConstraints只负责新增约束Autolayout不能同时存在两条针对于同一对象的约束否则会报错 mas_updateConstraints针对上面的情况会更新在block中出现的约束不会导致出现两个相同约束的情况 mas_remakeConstraints 则会清除之前的所有约束仅保留最新的约束。
二、代码事例:简单的登录界面:
-(void)setLoginPage
{
__weaktypeof(self) weakSelf = self;
//使用mas_makeConstraints添加约束
//登录
_loginLabel.textAlignment=NSTextAlignmentCenter;
[_loginLabelmas_makeConstraints:^(MASConstraintMaker*make) {
// 添加大小约束(make就是要添加约束的控件view)
make.size.mas_equalTo(CGSizeMake(100,20));
make.left.equalTo((weakSelf.view.bounds.size.width-100)/2);
make.right.equalTo(-((weakSelf.view.bounds.size.width-100)/2));
make.top.equalTo(60);
}];
//帐号
_accountsLabel.textAlignment=NSTextAlignmentCenter;
[_accountsLabelmas_makeConstraints:^(MASConstraintMaker*make) {
// 添加大小约束(make就是要添加约束的控件view)
make.size.mas_equalTo(CGSizeMake(60,20));
make.left.equalTo(60);
make.top.equalTo(_loginLabel).mas_equalTo(80);
}];
//帐号输入
_accountsText.textAlignment=NSTextAlignmentCenter;
[_accountsTextmas_makeConstraints:^(MASConstraintMaker*make) {
// 添加大小约束(make就是要添加约束的控件view)
make.size.mas_equalTo(CGSizeMake(120,30));
make.right.equalTo(-60);
make.top.equalTo(_accountsLabel).mas_equalTo(-5);
}];
//密码
_passWordLabel.textAlignment=NSTextAlignmentCenter;
[_passWordLabelmas_makeConstraints:^(MASConstraintMaker*make) {
// 添加大小约束(make就是要添加约束的控件view)
make.size.mas_equalTo(_accountsLabel);
make.left.equalTo(_accountsLabel);
make.top.equalTo(_accountsLabel).mas_equalTo(60);
}];
//密码输入
_passWordText.textAlignment=NSTextAlignmentCenter;
[_passWordTextmas_makeConstraints:^(MASConstraintMaker*make) {
// 添加大小约束(make就是要添加约束的控件view)
make.size.mas_equalTo(_accountsText);
make.right.equalTo(-60);
make.top.equalTo(_passWordLabel).mas_equalTo(-5);
}];
{
__weaktypeof(self) weakSelf = self;
//使用mas_makeConstraints添加约束
//登录
_loginLabel.textAlignment=NSTextAlignmentCenter;
[_loginLabelmas_makeConstraints:^(MASConstraintMaker*make) {
// 添加大小约束(make就是要添加约束的控件view)
make.size.mas_equalTo(CGSizeMake(100,20));
make.left.equalTo((weakSelf.view.bounds.size.width-100)/2);
make.right.equalTo(-((weakSelf.view.bounds.size.width-100)/2));
make.top.equalTo(60);
}];
//帐号
_accountsLabel.textAlignment=NSTextAlignmentCenter;
[_accountsLabelmas_makeConstraints:^(MASConstraintMaker*make) {
// 添加大小约束(make就是要添加约束的控件view)
make.size.mas_equalTo(CGSizeMake(60,20));
make.left.equalTo(60);
make.top.equalTo(_loginLabel).mas_equalTo(80);
}];
//帐号输入
_accountsText.textAlignment=NSTextAlignmentCenter;
[_accountsTextmas_makeConstraints:^(MASConstraintMaker*make) {
// 添加大小约束(make就是要添加约束的控件view)
make.size.mas_equalTo(CGSizeMake(120,30));
make.right.equalTo(-60);
make.top.equalTo(_accountsLabel).mas_equalTo(-5);
}];
//密码
_passWordLabel.textAlignment=NSTextAlignmentCenter;
[_passWordLabelmas_makeConstraints:^(MASConstraintMaker*make) {
// 添加大小约束(make就是要添加约束的控件view)
make.size.mas_equalTo(_accountsLabel);
make.left.equalTo(_accountsLabel);
make.top.equalTo(_accountsLabel).mas_equalTo(60);
}];
//密码输入
_passWordText.textAlignment=NSTextAlignmentCenter;
[_passWordTextmas_makeConstraints:^(MASConstraintMaker*make) {
// 添加大小约束(make就是要添加约束的控件view)
make.size.mas_equalTo(_accountsText);
make.right.equalTo(-60);
make.top.equalTo(_passWordLabel).mas_equalTo(-5);
}];
}
三、参考文章地址:(1)http://www.brighttj.com/ios/ios-masonry-demo.html#comment-353
(2)http://wenku.baidu.com/link?url=chAe5TC0uFab5JjtjrwrMzvdnjtUB5BNdmmIqnKKOv0bvnLtNkgZ6zHd3P2RxHhWBd0s2YNDsxJm1q3Au634-E5vMRgHXajZL1G1BBHtZJS
0 0
- masonry的基本用法
- Masonry基本用法
- Masonry基本用法
- Masonry自动布局详解一:基本用法
- Masonry自动布局详解一:基本用法
- IOS 第三方库之-Masonry 基本用法
- Masonry的基本使用
- Masonry的基本使用方法
- Masonry框架基本使用方法
- Masonry的基本使用
- Masonry的基本使用
- Masonry 用法小结
- iOS Masonry用法
- Masonry的基础用法
- Masonry的用法
- Masonry比例用法
- 相对布局 Masonry 基本使用
- Masonry框架的基本使用
- java发送http post请求
- MyBatis Generator 详解
- opencv ffmepg 播放视频
- 动态库的查找路径
- 为速度而散列
- Masonry基本用法
- JSON数据 json.stringify()用法详解
- 文章标题
- Myeclipse使用常见问题汇总
- Freemaker初接触(一) 集成SpringMVC问题
- Java+eclipse+MySQL的配置
- 解决Ubuntu 14.04下Genymotion不能打开问题
- virtualbox相关问题系列
- 软件测试流程进阶----两年软件测试总结