Masonry
就是一个第三方为我们封装好的一个框架,其使用点语法,可以非常便利的添加约束,且语法通俗
-
使用前的准备工作
- 要在工程中倒入这个第三方库
在工程中创建一个Podfile文件,在位于工程目录的终端窗口中
$ touch Podfile
打开这个文件
写入platform :ios, '8.0' target ‘MasoryTest’ do pod 'Masonry' end
然后在终端输入
$ pod install
- 然后打开后缀为.xcworkspace文件
- 引入文件#import <Masonry.h>,编写代码
- 要在工程中倒入这个第三方库
-
使用
/// 构建约束
mas_makeConstraints
/// 更新约束 - 修改已经建立的约束,如果约束不存在,会在控制台输出错误
mas_updateConstraints
/// 会删除已经建立的所有约束,然后重新生成约束
mas_remakeConstraints
相关函数
equalTo(参照对象) // 参照属性相同可以省略
equalTo(参照对象.mas_参照属性) // 参照属性
注意:在设置约束之前,要加入视图之后,例如[self.view addSubview view1];
eg:
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor redColor];
[self.view addSubview:view];
[view mas_makeConstraints:^(MASConstraintMaker *make) {
//顶部边距
make.top.equalTo(self.view).offset(20);
//左边边距
make.left.equalTo(self.view).offset(20);
//底部边距
make.bottom.equalTo(self.view).offset(-20);
//右边边距
make.right.equalTo(self.view).offset(-20);
//让视图居中,位于屏幕中间
make.center.equalTo(self.view);
}];
更改约束
注意:更改时,只能更新已经建立的约束,如果建立的约束不在,会在控制台输出错误
UIView *view3 = [[UIView alloc] init];
view3.backgroundColor = [UIColor orangeColor];
[view addSubview:view3];
[view3 mas_makeConstraints:^(MASConstraintMaker *make) {
// make.left.top.equalTo(view2).offset(40);
make.left.equalTo(view2).offset(40);
make.top.equalTo(view2.mas_bottom).offset(40);
make.size.mas_equalTo(CGSizeMake(100, 100));
}];
UIButton *btn = [[UIButton alloc] init];
btn.layer.borderWidth = 2;
btn.layer.borderColor = [UIColor blackColor].CGColor;
self.viewdemon = view3;
[btn addTarget:self action:@selector(startAnimation) forControlEvents:UIControlEventTouchUpInside];
[btn setTitle:@"改变" forState:UIControlStateNormal];
[view addSubview:btn];
[btn mas_makeConstraints:^(MASConstraintMaker *make) {
// make.bottom.equalTo(view3.mas_bottom).offset(20);
make.left.equalTo(view2);
make.top.equalTo(view3.mas_bottom).offset(20);
make.size.mas_equalTo(view2);
}];
-(void)startAnimation {
//更改约束
[self.viewdemon mas_updateConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(200, 200));
}];
//增加动画效果
[UIView animateWithDuration:2.0 animations:^{
[self.view layoutIfNeeded];
}];
}
重建约束
mas_remakeConstraints 会删除已经建立的所有约束,然后生成新的约束
GitHub地址练习demo