Masory简单使用

2016-04-11  本文已影响0人  蓝鸥科技西安

现在可视化编程成为一种热流,大大的减少了我们程序开发的时间,提高了我开发的效率。但是作为一个程序员,我们不但要会新的知识,还要去学习旧的东西。如果我们去了公司接手的是老程序员写的,他没有用可视化,而是用了纯了代码约束,那么我们该如何去做?所以在这里我向大家简单的演示一下 Masonry 的使用,因为 Masonry 是大部分公司经常用到的一个纯代码约束第三方,它是对 NSLayoutConstraint 进行了分装,就好比 FMDB 是对 Sqlite 的封装,方便了程序员的使用

首先我们需要使用 cocoapodspod search masonry

pod 'Masonry', '~> 0.6.3'

#######import <Masonry/Masonry.h>

1、简单视图创建

    UIView *view1 = [[UIView alloc]init];
    view1.backgroundColor = [UIColor yellowColor];
    [self.view addSubview:view1];
    [view1 mas_makeConstraints:^(MASConstraintMaker *make) {

        // 设置view1的大小
        make.size.mas_equalTo(CGSizeMake(100, 100));
        //设置view1的中心点
        make.center.equalTo(self.view);
    }];

效果图1

这里我们需要注意一个地方,在创建视图的时候我们并不需要给它 frame ,直接 init 即可,直接将其添加到视图上,然后在对其进行约束设置。再次强调!!!先添加视图,再对其进行约束。约束用到 mas_makeConstraints 这个方法

2、边距设置

collectionViewItem 中,我们经常会设置 itemEdgeInsets,那么 Masonry 也给我们提供了去设置边距的方法,我们一起来看一下

 UIView *view2 = [[UIView alloc]init];
    view2.backgroundColor = [UIColor redColor];
    [view1 addSubview:view2];
    [view2 mas_makeConstraints:^(MASConstraintMaker *make) {

        // 设置view2距离view1的边距
        make.edges.mas_equalTo(UIEdgeInsetsMake(10, 10, 10, 10));
    }];
效果图2

3、综合

说了这么多,有人会说我写的都不在重点上,我们经常用到的约束都是距离某个view的上下左右多少,那么我们来综合演示一下

  UIView *view3 = [[UIView alloc]init];
    view3.backgroundColor = [UIColor redColor];
    [self.view addSubview:view3];
    [view3 mas_makeConstraints:^(MASConstraintMaker *make) {

        // 设置view3的大小
        make.size.mas_equalTo(CGSizeMake(300, 200));
        // 设置view3的中心
        make.center.equalTo(self.view);
    }];

    UIView *view4 = [[UIView alloc]init];
    view4.backgroundColor = [UIColor blueColor];
    [view3 addSubview:view4];
    [view4 mas_makeConstraints:^(MASConstraintMaker *make) {

        // view4和view3在一条水平线上
        make.centerY.equalTo(view3.mas_centerY);
        // view4的左边距离view3的左边10
        make.left.equalTo(view3.mas_left).with.offset(10);
        // view4的右边距离view3的中心点10
        make.right.equalTo(view3.mas_centerX).with.offset(-10);
        // view4的顶部距离view3的顶部10
        make.top.equalTo(view3.mas_top).with.offset(10);
        // view4的底部距离view3的底部10
        make.bottom.mas_equalTo(view3.mas_bottom).with.offset(-10);

    }];

    UIView *view5 = [[UIView alloc]init];
    view5.backgroundColor = [UIColor yellowColor];
    [view3 addSubview:view5];
    [view5 mas_makeConstraints:^(MASConstraintMaker *make) {

        // view5和view3在一条水平线上
        make.centerY.equalTo(view3.mas_centerY);
        // view5的右边边距离view3的右边10
        make.right.equalTo(view3.mas_right).with.offset(-10);
        // view5的左边距离view3的中心点10
        make.left.equalTo(view3.mas_centerX).with.offset(10);
        // view5的顶部距离view3的顶部10
        make.top.equalTo(view3.mas_top).with.offset(10);
        // view5的底部距离view3的底部10
        make.bottom.mas_equalTo(view3.mas_bottom).with.offset(-10);
    }];

在这里为什么距离还有负的呢?这块一个点:我们iOS坐标系中上左为正,下右为负

效果图3
上一篇下一篇

猜你喜欢

热点阅读