iOS -- masonry的使用

曹智
2023-12-01

安装masonry

根据博客cocoapods安装
masonry使用
完成masonry的安装

使用masonry

打开终端输入

cd

将文件拖入终端后输入

touch PodFile

之后你的项目里面将会多一个文件
打开文件在文件中输入

platform :ios, '7.0'
target '文件名' do
pod 'Masonry'
end

masonry基本使用

mas_makeConstraints() 添加约束
mas_remakeConstraints() 移除之前的约束,重新添加新的约束
mas_updateConstraints() 更新约束,写哪条更新哪条,其他约束不变

equalTo() 参数是对象类型,一般是视图对象或者mas_width这样的坐标系对象
mas_equalTo() 和上面功能相同,参数可以传递基础数据类型对象,可以理解为比上面的API更强大

width() 用来表示宽度,例如代表view的宽度
mas_width() 用来获取宽度的值。和上面的区别在于,一个代表某个坐标系对象,一个用来获取坐标系对象的值

使用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];
    // Masonry布局
    UIView* ViewDad = [[UIView alloc] initWithFrame:CGRectZero];
    ViewDad.backgroundColor = [UIColor redColor];
    [self.view addSubview:ViewDad];
    
    UIView* ViewSon = [[UIView alloc] initWithFrame:CGRectZero];
    ViewSon.backgroundColor = [UIColor orangeColor];
    [ViewDad addSubview:ViewSon];
    
    UIView* ViewSon2 = [[UIView alloc] initWithFrame:CGRectZero];
    ViewSon2.backgroundColor = [UIColor blueColor];
    [ViewSon addSubview:ViewSon2];
    
    UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setTitle:@"iOS" forState:UIControlStateNormal];
    [ViewSon2 addSubview:button];
    //先addSbuView 否则报错
    //在使用Masonry添加约束之前,需要在addSubview之后才能使用,否则会导致崩溃。
    
    [ViewDad mas_makeConstraints:^(MASConstraintMaker *make) {
        //规定当前视图距离父视图顶端的距离
        make.top.mas_offset(150);
        //规定当前视图距离父视图左端的距离
        make.left.mas_equalTo(70);
        //规定当前视图自身的宽度
        make.width.mas_offset(250);
        //规定当前视图自身的高度
        make.height.mas_equalTo(250);

    }];
    [ViewSon mas_makeConstraints:^(MASConstraintMaker *make) {
        //规定当前视图距离父视图顶端的距离
        make.top.mas_offset(25);
        //规定当前视图距离父视图左端的距离
        make.left.mas_equalTo(25);
        //规定当前视图自身的宽度
        make.width.mas_offset(200);
        //规定当前视图自身的高度
        make.height.mas_equalTo(200);
        
    }];
    [ViewSon2 mas_makeConstraints:^(MASConstraintMaker *make) {
        //规定当前视图距离父视图顶端的距离
        make.top.mas_offset(25);
        //规定当前视图距离父视图左端的距离
        make.left.mas_equalTo(25);
        //规定当前视图自身的宽度
        make.width.mas_offset(140);
        //规定当前视图自身的高度
        make.height.mas_equalTo(140);
        
    }];
    [button mas_makeConstraints:^(MASConstraintMaker *make) {
        //规定当前视图距离父视图顶端的距离
        make.top.mas_offset(40);
        //规定当前视图距离父视图左端的距离
        make.left.mas_equalTo(40);
        //规定当前视图自身的宽度
        make.width.mas_offset(50);
        //规定当前视图自身的高度
        make.height.mas_equalTo(50);
        
    }];    
}
@end


 类似资料: