- (void)viewDidLoad {

    [super viewDidLoad];

    //1.view1 居中显示

    UIView *view1 = [[UIView alloc]init];

    view1.backgroundColor = [UIColor redColor];

    [self.view addSubview:view1];

    [view1 mas_makeConstraints:^(MASConstraintMaker *make) {

        make.center.equalTo(self.view);  //居中

        make.size.mas_equalTo(CGSizeMake(300, 300));  //设置宽高

        //make.size.equalTo(@100);    //设置size

        //make.size.mas_equalTo(@100);

    }];

    //2.view2  在view1的正中间

    UIView *view2 = [UIView new];

    view2.backgroundColor = [UIColor blackColor];

    [view1 addSubview:view2];

    [view2 mas_makeConstraints:^(MASConstraintMaker *make) {

       // make.top.left.bottom.and.right.equalTo(view1).with.insets(UIEdgeInsetsMake(10, 10, 10, 10));

等价于:

//         make.top.equalTo(view1).with.offset(10);

//         make.left.equalTo(view1).with.offset(10);

//         make.bottom.equalTo(view1).with.offset(-10);

//         make.right.equalTo(view1).with.offset(-10);

//

也等价于:

        //设置四边缩进20

        make.edges.equalTo(view1).with.insets(UIEdgeInsetsMake(20, 20, 20, 20));

//        make.size.width.equalTo(@200);

//        make.size.height.equalTo(@200);

//        

    }];

注意点:

    /*

     mas_makeConstraints 只负责新增约束 Autolayout不能同时存在两条针对于同一对象的约束 否则会报错

     mas_updateConstraints 针对上面的情况 会更新在block中出现的约束 不会导致出现两个相同约束的情况

     mas_remakeConstraints 则会清除之前的所有约束 仅保留最新的约束

    [view1 mas_makeConstraints:^(MASConstraintMaker *make) {

    }];

    [view1 mas_remakeConstraints:^(MASConstraintMaker *make) {

    }];

    [view1 mas_updateConstraints:^(MASConstraintMaker *make) {

    }];

     */

    //3.view3与view1 在同一列

    UIView *view3 = [UIView new];

    view3.backgroundColor = [UIColor greenColor];

    [self.view addSubview:view3];

    [view3 mas_makeConstraints:^(MASConstraintMaker *make) {

        make.size.mas_equalTo(CGSizeMake(100, 100));

        make.centerX.equalTo(view1);   //设置水平居中

        make.top.equalTo(view1.mas_bottom).with.offset(20);  //与上view的垂直间隔

    }];

}

Masonry详解的更多相关文章

  1. iOS开发——屏幕适配篇&Masonry详解

    Masonry详解 前言 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-ip ...

  2. iOS自动布局——Masonry详解

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由鹅厂新鲜事儿发表于云+社区专栏 作者:oceanlong | 腾讯 移动客户端开发工程师 前言 UI布局是整个前端体系里不可或缺的一环 ...

  3. iOS 自动布局框架 – Masonry 详解

    目前iOS开发中大多数页面都已经开始使用Interface Builder的方式进行UI开发了,但是在一些变化比较复杂的页面,还是需要通过代码来进行UI开发的.而且有很多比较老的项目,本身就还在采用纯 ...

  4. iOS自动布局框架-Masonry详解

    首先,在正式使用Masonry之前,我们先来看看在xib中我们是如何使用AutoLayout     从图中我们可以看出,只要设置相应得局限,控制好父视图与子视图之间的关系就应该很ok的拖出你需要的需 ...

  5. iOS:Masonry练习详解

    Masonry练习详解   添加约束的方式: 1.通过使用NSLayoutConstraints添加约束到约束数组中,之前必须设置translatesAutoresizingMaskIntoConst ...

  6. AutoLayout详解+手把手实战(转载)

    首先说一下这篇博客虽然是标记为原创,但是事实并非本人亲自写出来的,知识点和例子本人花了一天各处查 找和整理最终决定写一个汇总的详解,解去各位朋友到处盲目查找的必要,因为不是转载某一个人的内容,故此不标 ...

  7. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  8. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  9. EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

    前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...

随机推荐

  1. 012——C#打开ecxel修改数据(附教程)

    (一)参考文献:[C#]将数据写入已存在的excel文件 C# 导入excel数据,解决关闭excel后不能释放资源的问题 (二)视频教程:https://v.qq.com/x/page/p30063 ...

  2. 1040 too many connections

    先重启mysql. 登录成功后执行以下语句查询当前的最大连接数:select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES where ...

  3. 使用webuploader实现大文件传输

    这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...

  4. learning scala implicit class

    隐式类可以用来扩展对象的功能非常方便 example: object ImplicitClass_Tutorial extends App { println("Step 1: How to ...

  5. __stdcall、Q_DECL_IMPORT、Q_DECL_EXPORT

    https://www.cnblogs.com/songfeixiang/p/3733661.html 在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只 ...

  6. linux系列(十):cat命令

    1.命令格式: cat [选项] [文件] 2.命令功能: cat主要有三大功能: (1).一次显示整个文件:cat filename (2).从键盘创建一个文件:cat > filename  ...

  7. 我的公众号 - Old Artist

    如果可以,我希望大家关注我的公众号,没有技术,没有华丽的文笔,只有简简单单的语句. 分享一些小的事情,大家好,我是老艺术家. Thanks~

  8. pmm的安装,这里推荐下载官方提供的脚本,直接执行这个脚本就可以完成安装

    脚本内容如下: #!/bin/sh set -o errexit set -o xtrace root_is_needed='no' check_command() { command -v &quo ...

  9. vue中点击复制粘贴功能 clipboard 移动端

    页面是由 v-for 循环渲染出来,要给每一个结构里面的复制按钮加一个复制功能 npm install clipboard --save    安装,如果安装处问题,多安装几次,我自己也安装了好几次 ...

  10. C# 图片进行马赛克处理

    MosaicHelper.AdjustTobMosaic( @"C:\Users\xxxue\Desktop\QQ图片20180704142029.jpg", @"C:\ ...