- (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. sql server update....set.... from ....where....

    工作中遇到的  update 的更新方法 以前update 表 set 列 = 新值     稍稍进阶    update 表 set 列 = (select  值 from 表 where ...) ...

  2. html5文件夹上传源码

    前段时间做视频上传业务,通过网页上传视频到服务器. 视频大小 小则几十M,大则 1G+,以一般的HTTP请求发送数据的方式的话,会遇到的问题:1,文件过大,超出服务端的请求大小限制:2,请求时间过长, ...

  3. jsp利用webuploader实现超大文件分片上传、断点续传

    1,项目调研 因为需要研究下断点上传的问题.找了很久终于找到一个比较好的项目. 在GoogleCode上面,代码弄下来超级不方便,还是配置hosts才好,把代码重新上传到了github上面. http ...

  4. qml 3d 纪念那些曾经爬过的坑

    1.使用多position画图时,图形不受控制的问题? 在变量属性设置时Attribute中的attributeBaseType 数据类型一定要和 Buffer中data 数据类型一定要相同. 例如  ...

  5. 为List<T>中的T进行参数校验

    1.现在前端发送了一个POST请求,他的Data是一个数组,而不是对象(jsonObj的值两侧是中括号). var jsonObj = [{'id':11, 'name':'叵'}, {'id':12 ...

  6. ROS中make_plan服务的使用

    路径规划:从一个点到另一个点,规划出最优的路线.用到service :make_plan (nav_msgs/GetPlan) 服务名为move_base_node/make_plan nav_msg ...

  7. Cannot initialize a variable of type 'Stu *' with an rvalue of type 'void *'

    code: 将 Stu* pStu = malloc(sizeof(Stu)); 改为Stu* pStu = (Stu*)malloc(sizeof(Stu)); code #include < ...

  8. c++ yaml-cpp 安装

    环境: Ubuntu14. 下载cmake(我使用的是3.1.0) https://cmake.org/files/v3.1/ tar -xvf cmake--Linux-x86_64.tar.gz ...

  9. GitLab安装及备份迁移数据

    centos7安装GitLab 下载相应版本rpm包 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 我此处下载9.3.6版本. # w ...

  10. C++ <Algorithm>小小总结

    <algorithm>是C++标准程序库中的一个头文件,定义了C++ STL标准中的基础性的算法(均为函数模板).<algorithm>定义了设计用于元素范围的函数集合.任何对 ...