什么是Masonry
Masonry 就是第三方为我们封装好的一个 AutoLayout 框架。其使用点语法,可以非常便利的添加 AutoLayout约束,且通俗的语法让人非常容易理解。
如何使用Masonry
Masonry的使用方法十分简单
第一步:配置CocoaPod
这里不做讲解,具体可以参考下面的一篇博客
2021年CocoaPods安装方法
在你的项目中创建Podfile文件
首先打开终端输入命令cd 你的文件项目路径,可以直接拖入终端,如下所示:
接下来输入touch Podfile
命令创建Podfile。
输入vim Podfile
命令修改Podfile文件
加入以下几句话:
在修改前一定要按一下i
,否则无法修改
platform :ios, '9.0'
target 'text' do // text为工程名
pod 'Masonry' // 引号内为添加的库
修改完之后按Esc
,输入:wq
,退出编辑
最后输入pod install,这样Podfile文件就配置完成了。
根据需要在代码中使用
下面是Masonry的一些API:
mas_makeConstraints() //添加约束
mas_remakeConstraints() //移除之前的约束,重新添加新的约束
mas_updateConstraints() //更新约束
equalTo() //参数是对象类型,一般是视图对象或者 mas_width 这样的坐标系对象
mas_equalTo() //和上面功能相同,参数可以传递基础数据类型对象,可以理解为比上面的API更强大
width() //用来表示宽度,例如代表view的宽度
mas_width() //用来获取宽度的值。和上面的区别在于,一个代表某个坐标系对象,一个用来获取坐标系对象的值
可以注意到这些API都带有前缀mas_,我们可以在引入Masonry头文件前加入两个宏定义,就可以不用加前缀了。
// 定义这个常量,就可以不用在开发过程中使用mas_前缀。
#define MAS_SHORTHAND
// 定义这个常量,就可以让Masonry帮我们自动把基础数据类型的数据,自动装箱为对象类型。
#define MAS_SHORTHAND_GLOBALS
以下是Masonry的一些基本属性:
其基础的设置属性如下:
1.尺寸:width、height、size。
2.边界:left、leading、right、trailing、top、bottom、edges。
3.中心点:center、centerX、centerY。
4.偏移量:offset、insets、sizeOffset、centerOffset。
5.priority()约束优先级(0~1000),multipler乘因数,dividedBy除因数
。
大小关系有三种:
1.equalTo
,相等。
2.lessThanOrEqualTo
,小于等于。
3.greaterThanOrEqualTo
,大于等于。
Masonry是非常方便的,它可以通过点语法来使用,我们只需要在约束中设置即可。
如下使用:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
_startButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[_startButton setTitle:@"上传头像" forState:UIControlStateNormal];
_startButton.tintColor = [UIColor blackColor];
_startButton.titleLabel.font = [UIFont systemFontOfSize:25];
_startButton.backgroundColor = [UIColor systemGrayColor];
[_startButton addTarget:self action:@selector(pressButton) forControlEvents:UIControlEventTouchUpInside];
// self.view.backgroundColor = [UIColor systemBlueColor];
[self.view addSubview:_startButton];
[_startButton makeConstraints:^(MASConstraintMaker *make) {
make.width.and.height.equalTo(150);
make.centerX.equalTo(self.view.centerX);
make.centerY.equalTo(self.view.centerY);
}];
}
注意这里添加约束一定要在addSubview语法后,不然就会引发错误。
文章参考:iOS——Masonry详解
小demo利用Masonry重写上传头像
完整代码上传在github。
MasonryDemo