前言
在学习Masonry之前需要先安装好Cocoapods,接着通过cocoapods来调用第三方库Masonry,关于cocoapods的安装可以参考这篇博客最新cocoapods安装流程。
一、基本概念
Masonry 是一个用于 iOS 和 macOS 的自动布局库,它基于 Auto Layout 的 NSLayoutConstraints,提供了一种简化、可链接和表达性强的语法来处理布局约束。使用 Masonry,您可以通过链式调用方法来创建和管理视图之间的约束关系,而无需编写繁琐的原始 Auto Layout 代码。它通过提供一组简洁的 API,使得布局约束的创建变得更加直观和易于理解。
二、使用方法
在我们为工程安装好所需第三方库Masonry之后,cocoapods会为我们创建一个新的工程文件,之后我们进行代码编写时使用新创建的工程文件即可。
在新的工程文件中当我需要调用第三方库Masonry时,只需在当前项目中添加#import "Masonry.h"
即可。
以下是Masonry库中所包含的一些封装好的函数
mas_makeConstraints()//用于添加约束,约束可以是边距,上下左右的距离,宽度或高度等。
mas_remakeConstraints()//移除之前的约束,重新添加新的约束
mas_remakeConstraints()//用于重置约束。可以在需要动态修改约束时使用。
equalTo()//用于设置约束关系中的相等关系。可以将一个视图的属性设置为另一个视图的属性。
masequalTo()//与上面的功能类似,比上面的函数多了类型转换操作
offset()//用于设置相对于某个视图的偏移量。
注意事项
1.使用mas_makeConstraints()添加约束需要在使用addSubview方法添加视图之后,否则会报错。
2.一般来说,equalTo()和masequalTo()两个方法都是通用的,但是对于数值元素使用mas_equalTo,对于对象或是多个属性的处理,使用equalTo。特别是多个属性时,必须使用equalTo,例如 make.left.and.right.equalTo(self.view);
下面是我调用第三方库Masonry实现的一个小demo,实现视图的重叠功能。
#import "ViewController.h"
#import "Masonry.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor whiteColor];
UIView* view01 = [[UIView alloc] init];
view01.backgroundColor = [UIColor blueColor];
[self.view addSubview:view01];
UIView* view02 = [[UIView alloc] init];
view02.backgroundColor = [UIColor yellowColor];
[view01 addSubview:view02];
UIView* view03 = [[UIView alloc] init];
view03.backgroundColor = [UIColor greenColor];
[view02 addSubview:view03];
[view01 mas_makeConstraints:^(MASConstraintMaker *make) {
make.center.equalTo(self.view);
make.size.mas_equalTo(CGSizeMake(300, 300));
}];
[view02 mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_offset(50);
make.left.mas_equalTo(50);
make.width.mas_offset(200);
make.height.mas_equalTo(200);
}];
[view03 mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_offset(50);
make.left.mas_equalTo(50);
make.width.mas_offset(100);
make.height.mas_equalTo(100);
}];
}
@end
运行结果如下:
总结
Masonry 是一个强大而简洁的自动布局库,它提供了一种更加优雅和易用的方式来处理视图之间的布局约束。无论是处理简单的界面布局还是复杂的自定义视图布局,Masonry 都能够帮助您更高效地创建和管理布局约束,加快开发速度并减少出错的可能性。