使用第三方框架 Masonry 实现自动布局

时间:2015-02-10 11:08:41      阅读:4595      评论:0      收藏:0      [点我收藏+]

标签:

由于前两天都在学习自动布局的使用,但是又觉得苹果原生的方式太过于麻烦,而且也不易于理解,昨天听人说了有个第三方框架也可以实现自动布局的功能,然后在https://github.com/上找到了Mansonry这个框架,使用起来真的减少了很多时间,而且代码直观,更加容易理解。

送上源码地址:https://github.com/Masonry/Masonry

以上说明了与参照控件的关系中三种条件的对应替代方法。

以上说明了上下左右等属性的对应替代属性。

一些设置约束的方法,更多内容请参考网站说明。

1 //设置约束
2 - (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block;
3
4 //如果之前已经有约束,则更新新的约束,如果没有约束,则添加约束
5 - (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *))block;
6
7 //将之前的约束全部删除,添加新的约束
8 - (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block;

以下为代码使用实现布局效果:

 1     //添加两个控件
2 UIView *blueView = [[UIView alloc] init];
3 blueView.backgroundColor = [UIColor blueColor];
4 blueView.translatesAutoresizingMaskIntoConstraints = NO;
5 [self.view addSubview:blueView];
6
7 UIView *redView = [[UIView alloc] init];
8 redView.backgroundColor = [UIColor redColor];
9 redView.translatesAutoresizingMaskIntoConstraints = NO;
10 [self.view addSubview:redView];
11
12 //给蓝色View设置约束
13 [blueView mas_makeConstraints:^(MASConstraintMaker *make) {
14 make.left.equalTo(self.view.mas_left).offset(30);//和父view的左边间距为30;
15 make.bottom.equalTo(self.view.mas_bottom).offset(-30);//和父view的底部间距为30;
16 make.right.equalTo(redView.mas_left).offset(-30);//和红色view的间距为30;
17 make.height.mas_equalTo(50);//蓝色view的高度为50
18 }];
19
20 //给红色View设置约束
21 [redView mas_makeConstraints:^(MASConstraintMaker *make) {
22 make.right.equalTo(self.view.mas_right).offset(-30);//和父view的右边间距为30;
23 make.bottom.equalTo(blueView.mas_bottom);//和蓝色view的底部对齐
24 make.height.equalTo(blueView.mas_height);//和蓝色view的高度相等
25 make.width.equalTo(blueView.mas_width);//和蓝色view的宽度相等
26 }];

效果图如下:

用了这个框架之后,再对比之前使用代码布局的效果,感觉就是一个天一个地啊,而且在某些地方使用block感觉比使用delegate更加实用和简捷方便,看来以后还是要多逛逛https://github.com/还是会得到很多收获的。

使用第三方框架 Masonry 实现自动布局的更多相关文章

  1. ios开发学习笔记040-autolayout 第三方框架Masonry

    不管是是界面创建约束还是代码创建约束,苹果官方提供的方式都比较繁琐.所以出现了第三方框架. Masonry 在github地址如下: https://github.com/SnapKit/Masonr ...

  2. iOS 第三方框架-Masonry

    介绍地址:http://www.cocoachina.com/ios/20141219/10702.html 官网:https://github.com/SnapKit/Masonry 记住:一定要先 ...

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

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

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

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

  5. 第三方框架-纯代码布局:Masonry的简单使用

    Masonry是一个对系统NSLayoutConstraint进行封装的第三方自动布局框架,采用链式编程的方式提供给开发者API.系统AutoLayout支持的操作,Masonry都支持,相比系统AP ...

  6. iOS开发常用的第三方框架

    1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是G ...

  7. iOS-常用的第三方框架的介绍

    写iOS 程序的时候往往需要很多第三方框架的支持,可以大大减少工作量,讲重点放在软件本身的逻辑实现上. GitHub 里面有大量优秀的第三方框架,而且 License 对商业很友好.一下摘录一下几乎每 ...

  8. GitHub 里面有大量优秀的第三方框架

    写iOS 程序的时候往往需要很多第三方框架的支持,可以大大减少工作量,讲重点放在软件本身的逻辑实现上. GitHub 里面有大量优秀的第三方框架,而且 License 对商业很友好.一下摘录一下几乎每 ...

  9. FMDB第三方框架

    FMDB是同AFN,SDWebImage同样好用的第三方框架,它以OC的方式封装了SQLite的C语言API,使得开发变得简单方便. 附上github链接https://github.com/ccgu ...

随机推荐

  1. cf B Inna and Candy Boxes

    题意:输入n,然后输入n个数ai,再输入n个数bi,如果在1-ai中能找到两个数x,y,x和y可以相等,如果x+y=bi,答案加上x*y,否则减去1,让结果尽可能大,输出结果. #include &l ...

  2. Json传递后台数据的问题

    在后台我有两个类: public Class Person { private String name; private Address address;//一个自定义的类 //getter和sett ...

  3. java实战之数组工具集

    java是一门面向对象的语言,我们也提到过,面向对象的一个优点就在于能够提高代码的复用性,前面我们详细讲过数组的查找,排序,等等,为了提高代码的复用性,我们何不自己写一个数组的工具集,来综合下前面所学 ...

  4. Light OJ 1017 - Brush (III)

    题目大意:     在一个二维平面上有N个点,散落在这个平面上.现在要清理这些点.有一个刷子刷子的宽度是w. 刷子上连着一根绳子,刷子可以水平的移动(在X轴方向上).他可以把刷子放在任何一个地方然后开 ...

  5. HDOJ 2188 悼念512汶川大地震遇难同胞——选拔志愿者

    Problem Description 对于四川同胞遭受的灾难,全国人民纷纷伸出援助之手,几乎每个省市都派出了大量的救援人员,这其中包括抢险救灾的武警部队,治疗和防疫的医护人员,以及进行心理疏导的心理 ...

  6. Hat's Fibonacci(大数问题)

    #include <iostream>#include <stdio.h>#include <string.h>using namespace std;int a[ ...

  7. xp多网卡静态路由设置方法

    xp多网卡静态路由设置方法 一.多个IP都在同一网段或VALN.这类情况没什么好说的,在各块网卡的本地连接属性里设置好IP地址.子网掩码和默认网关即可. 二.多个IP属于不同网段或VLAN.这时如果按 ...

  8. FC和SCSI

    IDE(Integrated Drive Electronics)即"电子集成驱动器",它的本意是指把"硬盘控制器"与"盘体"集成在一起的硬 ...

  9. Linux 输出重定向>和>>的区别是什么

    > 是定向输出到文件,如果文件不存在,就创建文件:如果文件存在,就将其清空:一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节): & ...

  10. python-selenium实现的简易下载器,并常见错误解决

    简易下载器的实现 支持代理.失败重试.确保包含指定ID元素(可根据需求自定义修改) # coding: utf-8 from Utils import logging from bs4 import ...