1.边距

[bottomView mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.equalTo(self.view).offset(0) ;

}] ;

在和父视图比较时,可以省略掉父视图,如下:

[bottomView mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.mas_equalTo(10) ;

}] ;

需要注意的是必须在和父视图同样方向比较时才可以省略,比如子视图的左边和父视图的左边做约束时才可以省略,子视图的左边和父视图的右边做约束时则不可以比较。

2.内边距

[bottomView mas_makeConstraints:^(MASConstraintMaker *make) {

make.edges.equalTo(self.view).insets(UIEdgeInsetsMake(0, 0, 0, 0)) ;

}] ;

上面的约束等价于

[bottomView mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.top.bottom.right.equalTo(self.view).offset(0) ;

}] ;

3.约束动画

约束做动画相比之下比frame做动画要复杂一点。

@interface ViewController ()

{

CGFloat _scale ;

UIButton* _button ;

}

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

self.view.backgroundColor=[UIColor whiteColor] ;

_scale=1.0 ;

_button=[UIButton buttonWithType:UIButtonTypeCustom] ;

_button.backgroundColor=[UIColor blueColor] ;

[_button addTarget:self action:@selector(clickBlue) forControlEvents:UIControlEventTouchUpInside] ;

[self.view addSubview:_button] ;

[_button mas_makeConstraints:^(MASConstraintMaker *make) {

make.height.width.offset(100*_scale).priorityLow() ;

make.center.equalTo(self.view) ;

make.width.height.lessThanOrEqualTo(self.view) ;

}] ;

}

-(void)clickBlue

{

_scale+=0.2 ;

//告诉系统需要更新约束

[self.view setNeedsUpdateConstraints] ;

// 调用此方法告诉self.view检测是否需要更新约束,若需要则更新,下面添加动画效果才起作用

[self.view updateConstraintsIfNeeded] ;

[UIView animateWithDuration:0.5 animations:^{

[self.view layoutIfNeeded] ;

}] ;

}

// 你所需要做的动画都在下面这个方法中写

-(void)updateViewConstraints

{

[super updateViewConstraints] ;

[_button mas_updateConstraints:^(MASConstraintMaker *make) {

make.height.width.offset(100*_scale).priorityLow() ;

make.center.equalTo(self.view) ;

make.height.width.lessThanOrEqualTo(self.view) ;

}] ;

}

@end

Masonry学习笔记的更多相关文章

  1. amazeui学习笔记一(开始使用5)--藏品collections

    amazeui学习笔记一(开始使用5)--藏品collections 一.总结 1.藏品collections:一些 Amaze UI 中没有的功能.amazeui认为好的解决方案.像图表绘制里面的百 ...

  2. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  3. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  4. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  5. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  6. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  7. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  8. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  9. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

随机推荐

  1. Atom插件推荐

    1.File Icons 为各种不同的文件显示icon 2.git plus 添加git的功能 3.atom-beauty 代码格式化工具 4.eclipse keybindings 在atom上使用 ...

  2. iOS8下bundle路径变更

    iOS8下路径变为: /Users/username/Library/Developer/CoreSimulator/Devices/786824FF-6D4C-4D73-884A-696514481 ...

  3. .net framework 3.5sp1 安装不成功

    主要还是进程中有程序和正在安装的 framework 3.5sp1有冲突.打开任务管理器,关闭所有360进程和与Framework有关的进程.竟然安装成功了,折腾了3.4天的问题,就这么解决了.

  4. 字符集和字符编码(Charset & Encoding)

    字符集和字符编码(Charset & Encoding)[转] 1.基础知识 计算机中储存的信息都是用二进制数表示的:而我们在屏幕上看到的英文.汉字等字符是二进制数转换之后的结果.通俗的说,按 ...

  5. XML Schema命名空间解析

    URI Web中汇集了各种资源.资源可以是具有标识的任何事物, 如文档. 文件. 菜单项. 计算机. 服务等, 甚至可以包括人. 组织和概念[BernersLee 1998].在Web体系结构中, ...

  6. 带有静态方法的类(java中的math类)

    带有静态方法的类通常(虽然不一定是这样)不打算被初始化. 可以用私有构造函数来限制非抽象类被初始化. 例如,java中的math类.它让构造函数标记为私有,所以你无法创建Math的实例.但Math类却 ...

  7. 修改APK包并push到system/app路径下安装

    在工作中,经常遇到需要修改apk包里的资源文件,达到检验不同配置下程序运行情况的目的. 过程如下: 1.首先连接手机,进入命令行,输入:adb root,使得adb获取root权限. 2.输入:adb ...

  8. NodeJS学习三之API

    Node采用V8引擎处理JavaScript脚本,最大特点就是单线程运行,一次只能运行一个任务.这导致Node大量采用异步操作(asynchronous opertion),即任务不是马上执行,而是插 ...

  9. php工作笔记7-概率算法

    a/m  b/m   c/m   d/m   10%    40%    20% a+b+c+d+... < = m array k   =  {a,b,c...} randt = rand(1 ...

  10. EM算法(2):GMM训练算法

    目录 EM算法(1):K-means 算法 EM算法(2):GMM训练算法 EM算法(3):EM算法运用 EM算法(4):EM算法证明 EM算法(2):GMM训练算法 1. 简介 GMM模型全称为Ga ...