Masonry使用介绍

下面是Masonry的代码地址:https://github.com/Masonry/Masonry

介绍一个简单使用:

                                                                                     <pre><code>[view1 mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(superview).with.insets(padding);
}];</code></pre>

介绍库中定位属性

首先在Masonry中能够添加autolayout约束有三个函数

下面是autolayout的三种方式及简介

- (NSArray *)mas_makeConstraints:(void(^)       (MASConstraintMaker *make))block;
- (NSArray *)mas_updateConstraints:(void(^) (MASConstraintMaker *make))block;
- (NSArray *)mas_remakeConstraints:(void(^) (MASConstraintMaker *make))block;
/*
mas_makeConstraints 只负责新增约束 Autolayout不能同时存在两条针对于同一对象的约束 否则会报错
mas_updateConstraints 针对上面的情况 会更新在block中出现的约束 不会导致出现两个相同约束的情况
mas_remakeConstraints 则会清除之前的所有约束 仅保留最新的约束
三种函数善加利用 就可以应对各种情况了
*/

所支持的类型 除了NSNumber支持的那些数值类型之外 就只支持CGPoint CGSize UIEdgeInsets

使用库函数的时候,会出现mas_xxx的方法

举例说明:

equalTo 和 mas_equalTo的区别在哪里呢?

其实 mas_equalTo是一个MACRO(宏定义)

下面是宏定义的源代码,可以感受一下

#define mas_equalTo(...)   equalTo(MASBoxValue((__VA_ARGS__)))
#define mas_greaterThanOrEqualTo(...) greaterThanOrEqualTo(MASBoxValue((__VA_ARGS__))) #define mas_lessThanOrEqualTo(...) lessThanOrEqualTo(MASBoxValue((__VA_ARGS__)))
#define mas_offset(...) valueOffset(MASBoxValue((__VA_ARGS__)))

下面是实际例子,来更好地理解代码

UIView *weakSelfView = self.view;
[self.view1 mas_makeConstraints:^(MASConstraintMaker *make) {
//单个属性设置make.top.equalTo(weakSelfView.mas_top).with.offset(10);
make.left.equalTo(weakSelfView.mas_left).with.offset(10);
make.right.equalTo(weakSelfView.mas_right).with.offset(-10);
make.height.equalTo(@300);
}];

UIEdgeInsets edge = UIEdgeInsetsMake(20, 20, 20, 20);
[view1 mas_makeConstraints:^(MASConstraintMaker *make) {
//设置整体边界 make.edges.equalTo(self.view).with.insets(edge);
}];

[view2 mas_makeConstraints:^(MASConstraintMaker *make) {
//使用CGPointMake和CGSizeMake方法设置属性
make.center.mas_equalTo(CGPointMake(-100, -100));
make.size.mas_equalTo(CGSizeMake(100, 100));
}];

[self.view1 mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.view);
//设置整体边界make.edges.equalTo(self.view).with.insets(UIEdgeInsetsMake(10, 10, 10, 10));
}];

[self.view1 mas_makeConstraints:^(MASConstraintMaker *make) {
//多个属性设置
make.top.bottom.equalTo(self.view);
make.right.and.left.equalTo(self.view);
make.width.equalTo(self.view.mas_width).multipliedBy(0.5);
}];

masonry使用介绍的更多相关文章

  1. Auto Layout深入理解,及masonry简单介绍

    本篇博客是本人在学习自己主动布局过程中对自己主动布局的理解和整理,分三部分介绍,内容可能会有所反复.见谅. 一.autosizing与Auto Layout对照,及Auto Layout简单介绍 1. ...

  2. iOS开发之Masonry框架源码深度解析

    Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁.Masonry简化了NSLayoutConstraint的使用方式,让 ...

  3. Masonry框架源码深度解析

    Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁.Masonry简化了NSLayoutConstraint的使用方式,让 ...

  4. iOS开发之Masonry框架源码解析

    Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁.Masonry简化了NSLayoutConstraint的使用方式,让 ...

  5. AutoLayout初战----Masonry与FDTemplateLayoutCell实践

    学iOS也有几个月了.一直都是纯代码开发,菜鸟入门,到今天还处在Frame时代.刚好近期项目在提审.有点时间能够学学传说中的AutoLayout.事实上.就是android的相对布局(Relative ...

  6. Masonry介绍与使用实践:快速上手Autolayout

    1 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-iphone3gs时代 w ...

  7. iOS AutoLayout自动布局&Masonry介绍与使用实践

    Masonry介绍与使用实践:快速上手Autolayout http://www.cnblogs.com/xiaofeixiang/p/5127825.html http://www.cocoachi ...

  8. Coding源码学习第四部分(Masonry介绍与使用(三))

    接上篇继续进行Masonry 的学习. (12)tableViewCell 布局 #import "TableViewController.h" #import "Tes ...

  9. [转载]Masonry介绍与使用实践(快速上手Autolayout)

    原博地址 http://adad184.com/2014/09/28/use-masonry-to-quick-solve-autolayout/ 前言 1 MagicNumber -> aut ...

随机推荐

  1. Java线程运行轨迹-代码追踪与定位

    今天在写程序时,想到一个问题,当我的程序出异常的时候,控制台输出信息中,明确指出了出现异常的位置,并详细列举了函数的调用层次关系,它是怎么做到的. 竟然想到了这个问题,就去查看了源代码,不过没点几下, ...

  2. thinkphp 总结 转

    用ThinkPHP做过几个项目后,感觉这个框架蛮不错的,很适合自己的逻辑习惯,开发起来也快捷,呵呵, 总结了一些项目中常用的东东,希望对初学TP的朋友有所帮助!  1. 模板中不能使用的标签 {$co ...

  3. php生成缩略图

    <?php /** * 生成缩略图函数(支持图片格式:gif.jpeg.png和bmp) * @author ruxing.li * @param string $src 源图片路径 * @pa ...

  4. linux下gdal的python包的安装

    由于python包是从C++包编译出来的,所以需要先下载源码进行编译安装.1. gdal下载http://download.osgeo.org/gdal/CURRENT/sudo ./configur ...

  5. python有序字典实现代码

    class MyDict(dict): #有序字典实现 def __init__(self): self.li = [] super(MyDict,self).__init__() def __set ...

  6. 七天学会SALTSTACK自动化运维 (3)

    七天学会SALTSTACK自动化运维 (3) 导读 SLS TOP.SLS MINION选择器 SLS文件的编译 总结 参考链接 导读 SLS SLS (aka SaLt State file) 是 ...

  7. SharePoint 设置Lookup 字段的值

    如何设置Lookup字段的值, 首先我们同样需要了解SPFieldLookupValueCollection和SPFieldLookupValue, 这2个类的原理和之前所讲解到SPFieldUser ...

  8. BTREE与其它索引的优缺点对比

    数据库BTree索引.Hash索引.Bitmap位图索引的优缺点 (2016-01-05 17:13:40) 转载▼ 标签: 数据库 索引 mysql oracle 分类: IT http://www ...

  9. ASP.NET最常用的页面生命周期事件

    PreInit:在页生命周期的早期阶段可以访问的事件.在PreInit事件后,将加载个性化信息和页主题. Init:在所有的控件都已初始化,且已应用所有外观设置后引发.使用该事件来读取或初始化控件属性 ...

  10. -_-#setTimeout与setInterval

    你真的了解setTimeout和setInterval吗? 存在一个最小的时钟间隔 有关零秒延迟,此回调将会放到一个能立即执行的时段进行触发.JavaScript 代码大体上是自顶向下执行,但中间穿插 ...