iOS开发 oc之Masonry之mas_makeConstraints如何用?

198 阅读2分钟

mas_makeConstraints 是 Masonry 框架中用于为视图添加约束的方法。以下是关于如何使用 mas_makeConstraints 的详细说明:

基本用法

  1. 导入框架
  • 直接拷贝 Masonry 框架到项目中。
  • 使用 CocoaPods 安装:pod 'Masonry', '\~> 1.0.1'。
  1. 引入头文件

#import <Masonry/Masonry.h>

  1. 添加视图到父视图:在使用 mas_makeConstraints 之前,必须先将视图添加到父视图中。

[self.view addSubview:view];

  1. 设置约束:使用 mas_makeConstraints 方法,并通过 block 设置约束。

[view mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.equalTo(superview.mas_left).with.offset(padding.left);

make.right.equalTo(superview.mas_right).with.offset(-padding.right);

make.top.equalTo(superview.mas_top).with.offset(padding.top);

make.bottom.equalTo(superview.mas_bottom).with.offset(-padding.bottom);

}];

约束类型

  • 边距:make.left, make.right, make.top , make.bottom
  • 宽度和高度:make.width, make.height
  • 中心位置:make.centerX, make.centerY
  • 基准线:make.firstBaseline, make.lastBaseline

修正

  • 位移修正:.with.offset(value)
  • 倍率修正:.multipliedBy(value)

示例代码

示例1:设置视图的内边距

[blueView mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.equalTo(self.view.mas_left).with.offset(10);

make.right.equalTo(self.view.mas_right).with.offset(-10);

make.top.equalTo(self.view.mas_top).with.offset(10);

make.bottom.equalTo(self.view.mas_bottom).with.offset(-10);

}];

示例2:设置视图的宽度和高度

[view1 mas_makeConstraints:^(MASConstraintMaker *make) {

make.width.mas_equalTo(200);

make.height.mas_equalTo(100);

}];

示例3:设置视图的中心位置

[view2 mas_makeConstraints:^(MASConstraintMaker *make) {

make.centerX.equalTo(self.view);

make.centerY.equalTo(self.view);

}];

示例4:设置视图的宽度为父视图宽度的倍数

[view3 mas_makeConstraints:^(MASConstraintMaker *make) {

make.width.equalTo(self.view).multipliedBy(0.5);

make.height.equalTo(self.view).multipliedBy(0.5);

}];

注意事项

  1. 视图必须先添加到父视图

[self.view addSubview:view];

  1. 避免重复约束:mas_makeConstraints 只负责新增约束,不能同时存在两条针对同一对象的约束,否则会报错。

  2. 保存约束以便后续引用:可以使用局部变量或属性来保存约束,以便后续更新或移除。

@property (nonatomic, strong) MASConstraint *topConstraint;

[view1 mas_makeConstraints:^(MASConstraintMaker *make) {

self.topConstraint = make.top .equalTo(superview.mas_top).with.offset(padding.top );

make.left.equalTo(superview.mas_left).with.offset(padding.left);

}];

  1. 使用 mas_equalTo equalTo 的区别
  • mas_equalTo 比 equalTo 多了类型转换操作,适用于数值元素。
  • equalTo 适用于对象或多个属性的处理,特别是多个属性时,必须使用 equalTo。

总结

mas_makeConstraints 是 Masonry 框架中用于添加约束的核心方法,通过 block 方便地设置各种类型的约束,并且可以进行位移和倍率修正。在使用时需要注意视图必须先添加到父视图,并且避免重复约束。通过保存约束对象,可以方便地进行后续的更新或移除操作。