Masory简单使用

现在可视化编程成为一种热流,大大的减少了我们程序开发的时间,提高了我开发的效率。但是作为一个程序员,我们不但要会新的知识,还要去学习旧的东西。如果我们去了公司接手的是老程序员写的,他没有用可视化,而是用了纯了代码约束,那么我们该如何去做?所以在这里我向大家简单的演示一下 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 目录 0、前言 一、Auto Layout前世今生 二、Auto Layout基础知识 1.Auto Layout...
    浮游lb阅读 24,975评论 3 90
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,663评论 25 708
  • I 想要做好一件事,却因为各种因素干扰无法顺利完成。解决方法:通过对自己实际生活的规律进行统计分析,找出哪个时间段...
    Zz_14f3阅读 185评论 0 0
  • 今天发了一个闪送,把钥匙送给张先生,本来是让我去送一趟,但是下午和儿子有约,然后儿子要求张先生自己回来取,结果关键...
    雪茄123阅读 200评论 0 0