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. SVN更新失败,提示locked

    使用SVN更新资源时,提示locked,解决方案如下: 首先找到是哪个文件不能进行更新/提交,在本地工作区间中找到这个文件对应的目录,目录里面会有.svn文件夹,这个文件夹默认是隐藏的,需要设置文件夹 ...

  2. visual studio中验证控件的使用

    1.RequiredFieldValidator:验证一个必填字段,如果这个字段没填,那么,将不能提交信息. RequiredFieldValidator控件中,主要设置三个属性: (1)ErrorM ...

  3. POJ3274-牛的属性-HASH-ACM

    原题:POJ3274 参考:进击的阿俊 已知有n头牛,用一个K位二进制数Ak,Ak-1,...,A1表示一头牛具有的特征,Ai=1表示具有特征i.现给定按顺序排列的N头牛的k位特征值,称某个连续范围内 ...

  4. masonry结合json 制作无限滚动的瀑布流

    做前端这行的 能直接贴代码就直接贴代码了,不用多说什么别的 效果需要引入jquery和jquery.masonry.min.js这两个JS JS代码如下: $(document).ready(func ...

  5. Tag Helpers 介绍

    Tag Helpers 介绍 原文:Introduction to Tag Helpers作者:Rick Anderson翻译:刘浩杨校对:高嵩(Jack) 什么是 Tag Helpers? Tag ...

  6. 如何使用SplitContainer控件[转]

    原文地址:http://yinzhihua2008.blog.163.com/blog/static/794306720120511150457/ 在Windows资源管理器中,当把鼠标指针移动到Tr ...

  7. 登录远程SQL服务器

    一 看ping 服务器IP能否ping通. 这个实际上是看和远程sql server 2000服务器的物理连接是否存在.如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务 ...

  8. 终端上设置git

    http://blog.163.com/xianfuying@126/blog/static/21960005201181482518631/ 在-/.ssh的位置vi id_rsa.pub 拷贝的时 ...

  9. War3Tool dota改键v3.3版

    wartool魔兽全屏改键功能:1.支持11平台自定义改建,自动进局域网(同类软件暂时没发现这个功能)2.技能改键,可以有效的切换适合你的技能键3.war3路径扫描,运行本程序一键就能打开war3 ( ...

  10. winform登录时,在密码框按下回车,直接登陆

    //按回车,焦点跳到密码文本框 private void txtUserName_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyCha ...