【原】iOS学习之Masonry第三方约束
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 就没有区别
如果添加了下面的宏,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第三方约束的更多相关文章
- 【原】iOS学习47之第三方-FMDB
将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 FMDB 第三方集成到工程中,具体请看博客iOS学习46之第三方CocoaPods的安装和使用(通用方法) 1. FMDB ...
- IOS学习:常用第三方库(GDataXMLNode:xml解析库)
IOS学习:常用第三方库(GDataXMLNode:xml解析库) 解析 XML 通常有两种方式,DOM 和 SAX: DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过 ...
- iOS学习笔记——AutoLayout的约束
iOS学习笔记——AutoLayout约束 之前在开发iOS app时一直以为苹果的布局是绝对布局,在IB中拖拉控件运行或者直接使用代码去调整控件都会发上一些不尽人意的结果,后来发现iOS在引入了Au ...
- 【原】iOS学习46之第三方CocoaPods的安装和使用(通用方法)
本文主要说明CocoaPods的安装步骤.使用说明和常见的报错即解决方法. 1. CocoaPods 1> CocoaPods简介 CocoaPods是一个用来帮助我们管理第三方依赖库的工具. ...
- 【原】iOS学习之PINCache第三方缓存框架
在项目中总是需要缓存一些网络请求数据以减轻服务器压力,业内也有许多优秀的开源的解决方案.通常的缓存方案都是由内存缓存和磁盘缓存组成的,内存缓存速度快容量小,磁盘缓存容量大速度慢可持久化. 1.PINC ...
- 【原】iOS学习之第三方-AFNetworking1.3.0
将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 AFNetworking 第三方集成到工程中,具体请看上篇博客iOS学习46之第三方CocoaPods的安装和使用(通用方 ...
- iOS学习——布局利器Masonry框架源码深度剖析
iOS开发过程中很大一部分内容就是界面布局和跳转,iOS的布局方式也经历了 显式坐标定位方式 --> autoresizingMask --> iOS 6.0推出的自动布局(Auto La ...
- 原 iOS深入学习(Block全面分析)http://my.oschina.net/leejan97/blog/268536
原 iOS深入学习(Block全面分析) 发表于1年前(2014-05-24 16:45) 阅读(26949) | 评论(14) 39人收藏此文章, 我要收藏 赞21 12月12日北京OSC源创会 ...
- 【原】iOS学习之事件处理的原理
在iOS学习23之事件处理中,小编详细的介绍了事件处理,在这里小编叙述一下它的相关原理 1.UITouch对象 在触摸事件的处理方法中都会有一个存放着UITouch对象的集合,这个参数有什么用呢? ( ...
随机推荐
- jvm--2.类加载机制
3.JVM类加载机制 (1)类加载机制 虚拟机把描述类的数据从Class文件,用ClassLoader ,加载到内存,并对数据进行校验.转换解析和初始化,最终形成虚拟机直接使用的java类型, 这就是 ...
- 转VS2010解决方案转换到VS2008
原文链接地址:http://www.codeproject.com/Tips/80953/Converting-VS2010-Solution-to-VS2008 如果你使用VS2010的任何版本 ...
- java中File类的getPath(),getAbsolutePath(),getCanonicalPath()区别
File file = new File(".\\test.txt"); System.out.println(file.getPath()); System.out.printl ...
- Centos7下面配置静态IP
修改网卡配置文件(操作前先备份一下该文件),/etc/sysconfig/network-scripts/ifcfg-enp0s3 ,如下: TYPE=Ethernet BOOTPROTO=stati ...
- Debian 8.3 中文字体安装
有了这个字体,对于日常工作和生活而言已经非常足够了.如果你还需要更多中文字体的话,推荐可以安装“文泉驿正黑”,“文泉驿点阵宋体”等.文泉驿的安装包已经进入了 Debian/Ubuntu,直接安装 tt ...
- centos6u3 安装 celery 总结
耗时大概6小时. 执行 pip install celery 之后, 在 mac 上 celery 可以正常运行, 在 centos 6u3 上报错如下: Traceback (most recent ...
- theano学习
import numpy import theano.tensor as T from theano import function x = T.dscalar('x') y = T.dscalar( ...
- Markdown 语法说明(持续更新-20160822)
Markdown 是一种轻量级的「标记语言」.Markdown 语法的目标是:成为一种适用于网络的书写语言.Markdown 的语法简单,熟悉Markdown语法规则,事倍功半. 语法 插入图片如何定 ...
- maven学习(中)- 私服nexus搭建
接上回继续,相信大家对maven每次都联网从国外站点下载依赖项的龟速网络已经不坎忍受了,今天先来看看如何搭建"仓库私服",目前nexus是使用比较广泛的私服软件之一,下面将介绍基本 ...
- SQL Server 从数据库中查询去年的今天的数据的sql语句
因为最近的项目的一个小功能需要实现当前数据和历史的今天做一个对比.在网上也查了很久,很多都是实现一个月内的,一年内的所有数据,昨晚突然就找到了下面的实现方法,在SQL Server2008中试了一下, ...