美文网首页
Masonry的简单使用(一)

Masonry的简单使用(一)

作者: 86699a70a943 | 来源:发表于2017-04-25 23:47 被阅读0次

    一 简介:

    Masonry是一个轻量级的布局框架(OC),拥有自己的描述语法,采用更优雅的链式语法封装起来的自动布局,不仅简单明了并且具有极高的可读性,而且同时支持iOS和Max OS X。Masonry是一个用代码写iOS或OS界面的工具库, 可以代替Auto layout。Masonry的github地址:https://github.com/SnapKit/Masonry

    二 准备工作:

    ①github下载Masonry的本地文件或者同cocoapods引入
    ②引入头文件 #import "Masonry.h"

    三 Masonry使用讲解:

    1.mas_makeConstraints 是给view添加约束,约束有几种,分别是边距,宽,高,左上右下距离,基准线。添加过约束后可以有修正,修正 有offset(位移)修正和multipliedBy(倍率)修正
    2.语法一般是 make.equalTo or make.greaterThanOrEqualTo or make.lessThanOrEqualTo + 倍数和位移修正
    3.注意点1: 使用 mas_makeConstraints方法的元素必须事先添加到父元素的中,例如[self.view addSubview:view];
    4.注意点2: mas_equalTo 和 equalTo 区别:mas_equalTo 比equalTo多了类型转换操作,一般来说,大多时候两个方法都是 通用的,但是对于数值元素使用mas_equalTo。对于对象或是多个属性的处理,使用equalTo。特别是多个属性时,必须使用equalTo,例如 make.left.and.right.equalTo(self.view);
    5.注意点3: 注意到方法with和and,这两个方法其实没有做任何操作,方法只是返回对象本身,这个方法的左右完全是为了方法写的时候的可读性 。make.left.and.right.equalTo(self.view);和make.left.right.equalTo(self.view);是完全一样的,但是明显的加了and方法的语句可读性 更好点。

    四 代码演示

    //例1: 以父视图为中心, 宽高为 300 * 300
    -(void)expOne {

    UIView *view = [UIView new];
    [view setBackgroundColor:[UIColor greenColor]];
    [self.view addSubview:view];
    [view mas_makeConstraints:^(MASConstraintMaker *make) {
        make.center.equalTo(self.view);
        make.size.mas_equalTo(CGSizeMake(300, 300));
    }];
    

    }
    //例2: 上下左右边距都为 20
    -(void)expTwo {

    UIView *view = [UIView new];
    [view setBackgroundColor:[UIColor redColor]];
    [self.view addSubview:view];
    [view mas_makeConstraints:^(MASConstraintMaker *make) {
        //1.这里我们先看看默认的设置 左 上 右 下 各个间距的方法
        //make.left.equalTo(self.view).with.offset(10);
        //make.top.equalTo(self.view).with.offset(10);
        //make.right.equalTo(self.view).with.offset(-10);
        //make.bottom.equalTo(self.view).with.offset(-10);
        //2.如果 左 上 右 下 需要同时设置 并且 各个间距值一样, 那么可以使用下面的代替
        make.edges.equalTo(self.view).with.insets(UIEdgeInsetsMake(10, 10, 10, 10));
        //3.如果 左 上 右 下 需要同时设置 但是 并不是所有的间距值一样, 此时上面两种都不合适了。
        //make.left.and.top.equalTo(self.view).with.offset(10);
        //make.bottom.and.right.equalTo(self.view).with.offset(-20);
        //看了上面的这种写法,有没有发现其实第二种也可以按照这种写法, 四个合并起来写呢?只不过是麻烦了点。
    }];
    

    }

    //例3: 两个高度为150的view, 垂直居中 + 等宽 + 等间隔 排列, 间隔为10
    -(void)expThree {

    UIView *leftV = [UIView new];
    [leftV setBackgroundColor:[UIColor redColor]];
    [self.view addSubview:leftV];
    
    UIView *rightV = [UIView new];
    [rightV setBackgroundColor:[UIColor greenColor]];
    [self.view addSubview:rightV];
    
    [leftV mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.mas_equalTo(self.view.mas_centerY);
        make.height.mas_equalTo(150);
        make.width.mas_equalTo(rightV.mas_width); //设置宽度
        make.left.mas_equalTo(self.view.mas_left).with.offset(10); //设置左边距,参照视图为父视图
        make.right.mas_equalTo(rightV.mas_left).with.offset(-10); // “-” 表示左移, 参照视图为rightV
    }];
    [rightV mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.mas_equalTo(self.view.mas_centerY);
        make.height.mas_equalTo(150);
        make.width.mas_equalTo(leftV.mas_width); //设置宽度
        make.left.mas_equalTo(leftV.mas_right).with.offset(10);  //设置左边距,参照视图为leftV
        make.right.mas_equalTo(self.view.mas_right).with.offset(-10); // “-” 表示左移, 参照视图为父视图
    }];
    

    }

    相关文章

      网友评论

          本文标题:Masonry的简单使用(一)

          本文链接:https://www.haomeiwen.com/subject/ekmbzttx.html