Masonry

1、什么是Masonry

Masonry是一个轻量级的布局框架。采用链式语法封装自动布局,简洁明了并具有高可读性,而且同时支持iOS和mac os。

2、使用

mas_makeConstraints给view添加约束。约束有几种,分别是边距,宽,高,左上右下距离,基准线。添加后可以修正,修正有offset(位移)和multipliedBy(倍率)修正。

语法一般是(三种关系)make.equalTo(等于) or make.greaterThanOrEqualTo(大于) or make.lessThanOrEqualTo(小于)+ 倍数或位移修正。

   基本的属性设置

/**

1.尺寸:width、height、size

2.边界:left、leading、right、trailing、top、bottom

3.中心点:center、centerX、centerY

4.边界:edges

5.偏移量:offset、insets、sizeOffset、centerOffset

6.priority()约束优先级(0-1000),multipler乘因数、dividedBy除因数

Masonry有三个最基本的使用方法

/** 添加约束 

只负责新增约束 Autolayout不能同时存在两条针对于同一对象的约束 否则会报错

*/

[view mas_makeConstraints:<#^(MASConstraintMaker *make)block#>]

/** 更新特定的约束

针对上面的情况 会更新在block中出现的约束 不会导致出现两个相同约束的情况

 */

[view mas_updateConstraints:<#^(MASConstraintMaker *make)block#>]

/** 重置所有的约束

则会清除之前的所有约束 仅保留最新的约束

 */

[view mas_remakeConstraints:<#^(MASConstraintMaker *make)block#>]

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

等同于

{

//  make.left.equalTo(self.view).with.offset(10);

//  make.right.equalTo(self.view).with.offset(-10);

//  make.top.equalTo(self.view).with.offset(10);

//  make.bottom.equalTo(self.view).with.offset(-10);

}

可以看到 edges 其实就是top,left,bottom,right的一个简化

iOS里有一个方法是用来更新或者增加约束时调用的

-  (void)updateConstraints {    [self.growingButton mas_updateConstraints:^(MASConstraintMaker *make) {       

 //...}];  

  //这个父类方法一定要调用,不然会报错  

  [super updateConstraints];

}

如果你想主动调用这个系统方法

[self.btn setNeedsUpdateConstraints];

告诉系统,需要改变约束。

如果需要实现动画,就需在动画里面执行

[self.btn layoutIfNeed];

http://blog.csdn.net/qq_33351410/article/details/52689522      //Masonry的使用总结

3、注意事项

 布局控件必须加入到父控件中。

masequalto和equalTo的区别:前者比后者多了类型转换功能,大多数时候两个方法是通用的。对于数值元素使用mas_equalTo。对于对象或者是多个属性的处理用equalTo,特别是多属性时必须用。例如make.left.and.right.equalTo(self.view);mas_equalTo所支持的类型除了NSNumber支持的那些数值类型之外就只支持CGPoint  CGSize  UIEdgeInsets

方法with和and,这两个方法其实没有做任何操作,方法只是返回对象本身,这这个方法的左右完全是为了方法写的时候的可读性

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Masonry是一个轻量级的布局框架,拥有自己的描述语法,采用更优雅的链式语法封装自动布局,简洁明了并具有高可读性...
    3dcc6cf93bb5阅读 5,812评论 0 1
  • (一)Masonry介绍 Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布...
    木易林1阅读 7,046评论 0 3
  • iOS_autoLayout_Masonry 概述 Masonry是一个轻量级的布局框架与更好的包装AutoLay...
    指尖的跳动阅读 4,946评论 1 4
  • 一、前言 关于苹果的布局一直是我比较纠结的问题,是写代码来控制布局,还是使用storyboard来控制布局呢?以前...
    iplaycodex阅读 7,184评论 0 1
  • 槐荫愚叟 著 我拉着拉杆箱,一个人漫无目的的在这条深深的小巷里走着,现在已经是夜里十点多钟了,整条街上的路灯都已经...
    槐荫愚叟阅读 3,017评论 0 1