massonary之block部分運(yùn)用
- block作為函數(shù)參數(shù)
UIView *blueView = UIView.new;
blueView.backgroundColor = UIColor.blueColor;
blueView.layer.borderColor = UIColor.blackColor.CGColor;
blueView.layer.borderWidth = 2;
[self addSubview:blueView];
UIView *superview = self;
int padding = 10;
[greenView makeConstraints:^(MASConstraintMaker *make) {
make.top.greaterThanOrEqualTo(superview.top).offset(padding);
make.left.equalTo(superview.left).offset(padding);
make.bottom.equalTo(blueView.top).offset(-padding);
make.right.equalTo(redView.left).offset(-padding);
make.width.equalTo(redView.width);
make.height.equalTo(redView.height);
make.height.equalTo(blueView.height);
}];//大括號(hào)包含就是block
//.h文件
- (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block;因?yàn)樽兞款?lèi)型再前面所以變量名移出來(lái)為block
//實(shí)現(xiàn)代碼
- (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block {
return [self mas_makeConstraints:block];//這個(gè) 大括號(hào)包含是函數(shù)的實(shí)現(xiàn)部分,它的參數(shù)是block
}
//上面文件調(diào)用的函數(shù)原型
- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block {
self.translatesAutoresizingMaskIntoConstraints = NO;
MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self];
block(constraintMaker);//讓最外層那個(gè)傳進(jìn)去的block灼舍,執(zhí)行這個(gè)部分
return [constraintMaker install];
}
使用代碼實(shí)現(xiàn)Autolayout的方法3 - Masonry
- 使用步驟
- 添加Masonry文件夾的所有源代碼到項(xiàng)目中
- 添加2個(gè)宏干像、導(dǎo)入主頭文件
// 只要添加了這個(gè)宏,就不用帶mas_前綴 #define MAS_SHORTHAND
// 只要添加了這個(gè)宏,equalTo就等價(jià)于mas_equalTo
define MAS_SHORTHAND_GLOBALS
// 這個(gè)頭文件一定要放在上面兩個(gè)宏的后面
import "Masonry.h"
```
- 添加約束的方法
// 這個(gè)方法只會(huì)添加新的約束
[view makeConstraints:^(MASConstraintMaker *make) {
}];
// 這個(gè)方法會(huì)將以前的所有約束刪掉蕴侧,添加新的約束
[view remakeConstraints:^(MASConstraintMaker *make) {
}];
// 這個(gè)方法將會(huì)覆蓋以前的某些特定的約束
[view updateConstraints:^(MASConstraintMaker *make) {
}];
- 約束的類(lèi)型
1.尺寸:width\height\size
2.邊界:left\leading\right\trailing\top\bottom
3.中心點(diǎn):center\centerX\centerY
4.邊界:edges