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. 网页布局只mian部分左右固定,中间部分自适应

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Javascript中null值,特别注意的两点

    null 是一个javascript字面量,表示空值,就是没有对象被呈现.他是javascript原始值之一.null值常被放在期望一个对象上,但是不引用任何对象的参数位置,也就是说对象的初始化. 我 ...

  3. Wdcp缺少mod_rewite模块

    1.下载apache源码包,解压并查找到mod_rewrite.c文件 tar -zxvf httpd-2.2.27.tar.gz cd httpd-2.2.27 [root@localhost ht ...

  4. mysql数据类型——浮点和定点型

    mysql数据类型 字节 含义 float(m,d)           4字节  单精度浮点型,8位精度,m是十进制数字的总个数,d是小数点后面的数字个数 double(m,d)        8字 ...

  5. yii 验证确认密码是否一致 【"compare",'compareAttribute'=>'password'】

    array("surepassword","compare",'compareAttribute'=>'password','message'=>' ...

  6. bzoj1662: [Usaco2006 Nov]Round Numbers 圆环数

    Description 正如你所知,奶牛们没有手指以至于不能玩“石头剪刀布”来任意地决定例如谁先挤奶的顺序.她们甚至也不能通过仍硬币的方式. 所以她们通过"round number" ...

  7. 【Unity探究】物理碰撞实验

    这几天为了准备面试,所以决定对平时学习中的盲点扫盲一下,首先想到的就是物理碰撞.以前没有好好研究过,一直模糊不清,到底什么条件下才可以产生物理碰撞呢?只要其中一个有Rigidbody就可以了吗?所以进 ...

  8. SharePoint ListTemplateType enumeration

    from microsoft http://msdn.microsoft.com/en-us/library/office/microsoft.sharepoint.client.listtempla ...

  9. ibatis动态语句加and 和不加and

    <select id="queryGoodsGroupCodeName" parameterClass="String" resultClass=&quo ...

  10. workflow4.0持久化

    WF4中的持久化模型有了很大的变化. SqlWorkflowInstanceStore是WF提供给我们的开箱即用的类,它会将工作流数据保存到SQL Server 2005或是2008中.该类从Inst ...