【iOS】—— Masonry

Masonry

在使用Masonry前,一定要先完成老六cocoapods的安装,相关博客:cocoapods安装

在安装过程中会遇到特别多奇奇怪怪的bug,其中大部分bug估计在网上搜也无法解决,建议把下载的东西全部删掉,重新下载,并且建议在早上下载,成功概率大大提升。

使用masonry

在安装完成cocoapods之后,我们来看怎样使用masonry:

1.首先打开终端
在终端输入

cd 

然后将要安装masonry的项目文件夹拖入
请添加图片描述

在终端输入:

touch PodFile


此时你的项目文件夹多了一个文件:
请添加图片描述
打开此文件,在文件里输入:

platform :ios, '7.0'
target 'Masonry测试' do
pod 'Masonry'
end

其中target为项目名称
然后保存关闭文件,在终端输入pod install,此时等终端运行完成项目中出现如下图几个文件证明安装完成:
请添加图片描述

Masonry基本使用

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

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

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

1.尺寸:width、height、size
2.边界:left、leading、right、trailing、top、bottom
3.中心点:center、centerX、centerY
4.边界:edges
5.偏移量:offset、insets、sizeOffset、centerOffset
6.priority()约束优先级(0~1000

我们来看项目中代码的完成:

    _view1 = [[UIView alloc] initWithFrame:CGRectZero];
    _view1.backgroundColor = [UIColor blackColor];
    [self.view addSubview:_view1];
    
    _view2 = [[UIView alloc] initWithFrame:CGRectZero];
    _view2.backgroundColor = [UIColor yellowColor];
    [_view1 addSubview:_view2];
    
    _view3 = [[UIView alloc] initWithFrame:CGRectZero];
    _view3.backgroundColor = [UIColor greenColor];
    [_view2 addSubview:_view3];

首先完成三个view的初始化,让其相互嵌套,在这里需要注意的是Masonry的约束添加之前就要完成addsubview,否则会报错。

    UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setTitle:@"移动" forState:UIControlStateNormal];
    button.titleLabel.font = [UIFont systemFontOfSize:30];
    [button addTarget:self action:@selector(press) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];

然后完成一个button的初始化,控制最底部父亲视图的改变。

接下来是给四个控件添加约束:

    [_view1 mas_makeConstraints:^(MASConstraintMaker *make) {
        //规定当前视图距离父视图顶端的距离
        make.top.mas_offset(150);
        //规定当前视图距离父视图左端的距离
        make.left.mas_equalTo(70);
        //规定当前视图自身的宽度
        make.width.mas_offset(250);
        //规定当前视图自身的高度
        make.height.mas_equalTo(250);

    }];
    [_view2 mas_makeConstraints:^(MASConstraintMaker *make) {
        //规定当前视图距离父视图顶端的距离
        make.top.mas_offset(25);
        //规定当前视图距离父视图左端的距离
        make.left.mas_equalTo(25);
        //规定当前视图自身的宽度
        make.width.mas_offset(200);
        //规定当前视图自身的高度
        make.height.mas_equalTo(200);
        
    }];
    [_view3 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(90);
        //规定当前视图自身的高度
        make.height.mas_equalTo(90);
        
    }];
}

完成button事件函数用于对父视图位置改变:

- (void)press {
    [_view1 mas_updateConstraints:^(MASConstraintMaker *make) {
        //规定当前视图距离父视图顶端的距离
        make.top.mas_offset(250);
        //规定当前视图距离父视图左端的距离
        make.left.mas_equalTo(150);
        //规定当前视图自身的宽度
        make.width.mas_offset(250);
        //规定当前视图自身的高度
        make.height.mas_equalTo(250);
        
    }];
}

效果如下:

请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值