1、Masonry概述

  • 目前最流行的Autolayout第三方框架

  用优雅的代码方式编写Autolayout

  省去了苹果官方恶心的Autolayout代码

  大大提高了开发效率

2、常用方法

  • 这个方法只会添加新的约束
[blueView mas_makeConstraints:^(MASConstraintMaker *make) {

}];
  • 这个方法会将以前的所有约束删掉,添加新的约束
[blueView mas_remakeConstraints:^(MASConstraintMaker *make) {

}];
  • 这个方法将会覆盖以前的某些特定的约束
[blueView mas_updateConstraints:^(MASConstraintMaker *make) {

}]; 

3、约束类型

  • 尺寸:

  width(宽)\height(高)\size(大小)

        // 宽度约束
make.width.mas_equalTo();
// 高度约束
make.height.mas_equalTo(); // 大小约束(与上面两句等价)
make.size.mas_equalTo(CGSizeMake(, ));
  • 边界:

  left\leading(左边界)\right\trailing(右边界)\top(顶部边界)\bottom(底部边界)  

       // 左边(leading类似)
make.left.mas_equalTo(self.view).offset();
// 右边(trailing类似)
make.right.equalTo(self.view).offset(-);
// 顶部
make.top.equalTo(self.view).offset();
// 底部
make.bottom.mas_equalTo(self.view).offset(-);
  • 中心点:

  center\centerX\centerY

    // 居中(水平+垂直)
// 尺寸是父控件的一半
[blueView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(self.view).multipliedBy(0.5);
make.center.mas_equalTo(self.view); // 与下面两句代码等价
// make.centerX.mas_equalTo(self.view);
// make.centerY.mas_equalTo(self.view);
}];
  • 内边距实现边界约束:

  edges

// UIEdgeInsets 内边距

make.edges.mas_equalTo(self.view).insets(UIEdgeInsetsMake(, , , ));

4、mas_前缀修饰与不修饰的区别    

  • mas_equalTo和equalTo

  默认情况下:

   mas_equalTo有自动包装功能,比如自动将20包装为@20

   equalTo没有自动包装功能

  mas_equalTo的功能强于 > equalTo,可以一直使用mas_equalTo

  • mas_width和width

  默认情况下:

   width是make对象的一个属性,用来添加宽度约束用的,表示对宽度进行约束

   mas_width是一个属性值,用来当做equalTo的参数,表示某个控件的宽度属性

  mas_height、mas_centerX以此类推

  • 消除区别办法

  如果添加了下面的宏,那么 mas_equalTo 和 equalTo 就没有区别

  #define MAS_SHORTHAND_GLOBALS // 注意:这个宏一定要添加到#import "Masonry.h"前面

  如果添加了下面的宏,mas_width也可以写成width

  #define MAS_SHORTHAND

//define this constant if you want to use Masonry without the 'mas_' prefix
#define MAS_SHORTHAND //define this constant if you want to enable auto-boxing for default syntax
#define MAS_SHORTHAND_GLOBALS #import "Masonry.h" - (void)viewDidLoad {
[super viewDidLoad]; // 蓝色控件
UIView *blueView = [[UIView alloc] init];
blueView.backgroundColor = [UIColor blueColor];
[self.view addSubview:blueView]; // 红色控件
UIView *redView = [[UIView alloc] init];
redView.backgroundColor = [UIColor redColor];
[self.view addSubview:redView]; // 添加约束
CGFloat margin = ;
CGFloat height = ;
[blueView makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.view.left).offset(margin);
make.right.equalTo(redView.left).offset(-margin);
make.bottom.equalTo(self.view.bottom).offset(-margin);
make.height.equalTo(height);
make.top.equalTo(redView.top);
make.bottom.equalTo(redView.bottom);
make.width.equalTo(redView.width);
}]; [redView makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.view.right).offset(-margin);
}];

5、可有可无的用法

  以下方法都仅仅是为了提高可读性,可有可无

  • with
- (MASConstraint*)with {
return self;
}   
  使用情况示例代码
  // 尺寸限制:100x100
  // 位置:粘着父控件右下角,间距是20
  [blueView mas_makeConstraints:^(MASConstraintMaker *make) {
  // 宽度约束
   make.width.equalTo(@);
   // 高度约束
  make.height.equalTo(@);
   // 右边
   make.right.equalTo(self.view.mas_right).with.offset(-);
   // 顶部
   make.top.equalTo(self.view.mas_top).with.offset();
  }];
  • and
- (MASConstraint*)and {
return self;
}

  使用情况示例代码

    // 尺寸限制:100x100
// 位置:粘着父控件右下角,间距是20 [blueView mas_makeConstraints:^(MASConstraintMaker *make) {
// 宽度高度约束
make.width.and.height.mas_equalTo();
// 右边
make.right.equalTo(self.view).offset(-);
// 顶部
make.top.equalTo(self.view).offset(); }];

【原】iOS学习之Masonry第三方约束的更多相关文章

  1. 【原】iOS学习47之第三方-FMDB

    将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 FMDB 第三方集成到工程中,具体请看博客iOS学习46之第三方CocoaPods的安装和使用(通用方法) 1. FMDB ...

  2. IOS学习:常用第三方库(GDataXMLNode:xml解析库)

    IOS学习:常用第三方库(GDataXMLNode:xml解析库) 解析 XML 通常有两种方式,DOM 和 SAX: DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过 ...

  3. iOS学习笔记——AutoLayout的约束

    iOS学习笔记——AutoLayout约束 之前在开发iOS app时一直以为苹果的布局是绝对布局,在IB中拖拉控件运行或者直接使用代码去调整控件都会发上一些不尽人意的结果,后来发现iOS在引入了Au ...

  4. 【原】iOS学习46之第三方CocoaPods的安装和使用(通用方法)

    本文主要说明CocoaPods的安装步骤.使用说明和常见的报错即解决方法. 1. CocoaPods 1>  CocoaPods简介 CocoaPods是一个用来帮助我们管理第三方依赖库的工具. ...

  5. 【原】iOS学习之PINCache第三方缓存框架

    在项目中总是需要缓存一些网络请求数据以减轻服务器压力,业内也有许多优秀的开源的解决方案.通常的缓存方案都是由内存缓存和磁盘缓存组成的,内存缓存速度快容量小,磁盘缓存容量大速度慢可持久化. 1.PINC ...

  6. 【原】iOS学习之第三方-AFNetworking1.3.0

    将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 AFNetworking 第三方集成到工程中,具体请看上篇博客iOS学习46之第三方CocoaPods的安装和使用(通用方 ...

  7. iOS学习——布局利器Masonry框架源码深度剖析

    iOS开发过程中很大一部分内容就是界面布局和跳转,iOS的布局方式也经历了 显式坐标定位方式 --> autoresizingMask --> iOS 6.0推出的自动布局(Auto La ...

  8. 原 iOS深入学习(Block全面分析)http://my.oschina.net/leejan97/blog/268536

    原 iOS深入学习(Block全面分析) 发表于1年前(2014-05-24 16:45)   阅读(26949) | 评论(14) 39人收藏此文章, 我要收藏 赞21 12月12日北京OSC源创会 ...

  9. 【原】iOS学习之事件处理的原理

    在iOS学习23之事件处理中,小编详细的介绍了事件处理,在这里小编叙述一下它的相关原理 1.UITouch对象 在触摸事件的处理方法中都会有一个存放着UITouch对象的集合,这个参数有什么用呢? ( ...

随机推荐

  1. 第4月第2天 nsinvocation崩溃 mvc videotrack

    1. __unsafe_unretained id result = nil; [invocation getReturnValue:&result]; return result; http ...

  2. git+github上传与管理

    1.首先下载并安装git,方便管理github上的代码 https://git-scm.com/downloads 2.然后点击安装好的git bash(注册好自己的github) git confi ...

  3. kali 安装ss代理客户端的方法(纯属个人总结)

    1.声明版本,因为别的版本没测试过 2.下载客户端安装包 wget https://github.com/shadowsocks/shadowsocks/archive/master.zip 这个是代 ...

  4. java的各种使用小知识点总结。

    9,重写Arrays.sort public int getHeight(int[][] actors, int n) { // write code here if (null == actors ...

  5. ubuntu 搞坏了sudoers文件之修复方案

    pkexec visudo askubuntu原回答摘抄如下 On a modern Ubuntu system (and many other GNU/Linux distributions), f ...

  6. JSon解析

    1.解析总是犯糊涂 在图中,[]  中括号表示是jsonarray,{} 小括号 表示对象  这个解析可以写成: JSONArray array=new JSONArray(result); for( ...

  7. Unity3D访问Android系统目录

    file:///sdcard/Movies/3D/互动.mp4file:///storage/emulated/0/Movies/3D/互动.mp4/storage/emulated/0/Movies ...

  8. .net MVC 简单图片上传

    主要完成的是在网页上 上传一张图片到服务器 我搜出来的上传文件代码都特别复杂,对于初学者来说,先解决能上传的问题才最重要,并不需要特别多的功能,仅适合不会上传的初学者,大神请绕路,错误请指出,谢谢 v ...

  9. iOS之小门道道

    1.代理方法不执行 很多时候在你代理方法不执行时,小样,你看看你设置代理了吗?

  10. javaScript里的原型链

    原型对象也是普通的对象,是对象一个自带隐式的__proto__属性,原型也有可能有自己的原型,如果一个原型对象的原型不为null的话,我们就称之为原型链.原型链是由一些用来继承和共享属性的对象组成的( ...