Masonry学习笔记
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学习笔记的更多相关文章
- amazeui学习笔记一(开始使用5)--藏品collections
amazeui学习笔记一(开始使用5)--藏品collections 一.总结 1.藏品collections:一些 Amaze UI 中没有的功能.amazeui认为好的解决方案.像图表绘制里面的百 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
随机推荐
- eclipse项目debug方法
属性查看代码在哪里存 本地项目启动 1,2步骤需要success
- Google Developing for Android 二 - Memory 最佳实践 // lightSky‘Blog
Google Developing for Android 二 - Memory 最佳实践 | 分类于 Android最佳实践 原文:Developing for Android, II Th ...
- Win8.1安装Visual Studio 2015提示需要KB2999226
http://www.microsoft.com/zh-cn/download/details.aspx?id=48234 ,下载解压出来就有了,里面包含Vista.Win7.Win8.1三个系统x8 ...
- Winmail.dat(TNEF) issue on outlook
http://www.dwheeler.com/essays/microsoft-outlook-tnef.html
- Map小结
Map主要用于存储健值对个人理解:因为Map是根据键得到值,因此需要保证键值的唯一性,不允许键重复(重复了覆盖了),但允许值重复.1.HashMap根据键的HashCode 值存储数据,根据键可以直接 ...
- 3.2 ARM指令分类学习
1 算术移位寄存器和逻辑指令 1.1 mov 传送(Move) Mov {条件} {S} <dest>, <op_1> MOV从另一个寄存器.被移位的寄存器.或者一个立即数装载 ...
- CSSText属性批量修改样式
给一个HTML元素设置css属性 var head= document.getElementById("head");head.style.width = "200p ...
- centos 7 用yum安装 mysql
首先centos7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安 ...
- vi/vim 的使用
vi/vim 的使用 基本上 vi/vim 共分为三种模式,分别是一般模式.编辑模式与指令列命令模式. 这三种模式的作用分别是: 一般模式:以 vi 打开一个档案就直接进入一般模式了(这是默认的模式) ...
- STL学习 - map
C++中map容器提供一个键值对容器,map与multimap差别仅仅在于multiple允许一个键对应多个值. 一.map的说明 1 头文件 #include <map> 2 ...