xib或者故事版布局的局限性越来越明显,所以以纯代码布局为主逐渐成为iOSer比较喜欢的一种写代码方式,那么用的最多的肯定是Masonry,下面总结自己在使用masongy中的几个常用方法:
一、基本使用
使用masonry必须要先把控件对象添加到父视图上,然后再对它进行布局,不然编译会报错.
示例如下:
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(50 , 50, 50, 50)];
view.backgroundColor = [UIColor blueColor];
[self.view addSubview:view];
UIButton *btn = [UIButton buttonWithType:0];
btn.frame = CGRectMake(100, 100, 100, 20);
btn.backgroundColor = [UIColor redColor];
[self.view addSubview:btn];
[btn mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(view);
make.left.mas_equalTo(view.mas_right).mas_offset(20);
make.right.mas_equalTo(self.view).mas_offset(-20);
make.height.mas_offset(50);
}];
使用效果如图:
效果图.png
1.mas_makeConstraints
mas_makeConstraints是最常用的方法,简单来说就是给视图添加约束,如上所示。
2.mas_updateConstraints
mas_updateConstraints是更新约束的方法,在原有的约束基础上更新同类约束,非同类约束不变。
示例一:
[btn mas_updateConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(view).mas_offset(20);
}];
更新约束示例,这里更新了top约束.png
示例二:
[btn mas_updateConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(self.view).mas_offset(-100);
}];
这里更新了bottom约束,因为原约束包含了top和height约束,bottom就称为同类约束.png
示例三:
在原约束缺少某类约束时,我们看到更新约束能起到补全约束的作用:
[btn mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(view);
make.left.mas_equalTo(view.mas_right).mas_offset(20);
make.right.mas_equalTo(self.view).mas_offset(-20);
// make.height.mas_offset(50);
}];
[btn mas_updateConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(self.view).mas_offset(-100);
}];
补全约束.png
3.mas_remakeConstraints
mas_remakeConstraints重置约束,把原有约束清空后再添加约束
[btn mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(view);
make.left.mas_equalTo(view.mas_right).mas_offset(20);
make.right.mas_equalTo(self.view).mas_offset(-20);
// make.height.mas_offset(50);
}];
[btn mas_remakeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(view).mas_offset(0);
}];
可以看到原有约束都清空了.png
一句话总结:
make用第一次添加的, update用最新的, remake不但用最新的,同时还会把原有的统统删除,不管是不是同类约束
两个点
1.Masonry是基于NSLayoutConstraint的封装,在block里面写约束,更为直观,更易于理解。
2.masonry使用的最主要的编程思想:链式编程
网友评论