IOS开发-Masonry

Masonry是一个封装苹果Autolayout的一个第三方框架。简化了代码添加约束的代码量等。

下载地址:

https://github.com/SnapKit/Masonry

下载完后解压缩,把Masonry这个文件夹拖进项目里就可以了。

下面是一个小小的实例:

先导入头文件:

#import "Masonry/Masonry.h"
    UIView *buleView = [[UIView alloc]init];
    [buleView setBackgroundColor:[UIColor blueColor]];
    [self.view addSubview:buleView];

    [buleView mas_makeConstraints:^(MASConstraintMaker *make) {
        //大小
        make.size.mas_equalTo(CGSizeMake(50, 50));
        //位置:居中
        make.center.mas_equalTo(self.view);
    }];

运行一下,在屏幕中央就有一个50*50的蓝色小方块了。

Masonry里面几个约束的方法:

    [buleView mas_makeConstraints:^(MASConstraintMaker *make) {
        //添加新约束
    }];
    [buleView mas_remakeConstraints:^(MASConstraintMaker *make) {
        //会把以前的约束删除掉,添加新的约束
    }];
    [buleView mas_updateConstraints:^(MASConstraintMaker *make) {
        //更新以前的约束
    }];

引用Masonry文档的一个例子:

效果是一个view距离父控件上下左右都有10的边距。官方列举了两种写法,第二种直接一句话就能实现效果。

第一种:

UIEdgeInsets padding = UIEdgeInsetsMake(10, 10, 10, 10);

[view1 mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.equalTo(superview.mas_top).with.offset(padding.top); //with is an optional semantic filler
    make.left.equalTo(superview.mas_left).with.offset(padding.left);
    make.bottom.equalTo(superview.mas_bottom).with.offset(-padding.bottom);
    make.right.equalTo(superview.mas_right).with.offset(-padding.right);
}];

第二种:

[view1 mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(superview).with.insets(padding);
}];

到这里我们会碰到很多mas_前缀和没有这个前缀的东西,他们两个的区别就是带mas_前缀的是有对参数进行封装的,例如:

mas_equalTo(100)

equalTo(@100)

没有mas_前缀的就需要转类型,反之则不用。

如果要使这两个的效果等同,那么Masonry提供了两个宏给我们使用,但是需要注意的是,定义这个宏的时候,要在导入Masonry头文件之前,例如:

//define this constant if you want to enable auto-boxing for default syntax
#define MAS_SHORTHAND_GLOBALS

//define this constant if you want to use Masonry without the ‘mas_‘ prefix
#define MAS_SHORTHAND

#import "Masonry/Masonry.h"

这样就可以了。

时间: 2024-10-22 19:09:24

IOS开发-Masonry的相关文章

iOS开发-Masonry简易教程

关于iOS布局自动iPhone6之后就是AutoLayOut,AutoLayOut固然非常好用,不过有时候我们需要在页面手动进行页面布局,VFL算是一种选择,如果对VFL不是很熟悉可以参考iOS开发-VFL(Visual format language)和Autolayout.VFL不复杂,理解起来很容易,实际开发中用的特别熟还好,要是第一次看估计要花点功夫才能搞定.Masonry算是VFL的简化版,用的人比较多,之前项目中用过一次,对手动写页面的开发来说算是福利. 基础知识 首先我们看一个常见

iOS开发 Masonry的简单使用

首先,在正式使用Masonry之前,我们先来看看在xib中我们是如何使用AutoLayout 从图中我们可以看出,只要设置相应得局限,控制好父视图与子视图之间的关系就应该很ok的拖出你需要的需求.这里就不详细讲解具体拖拽的方法..... 然后,我们按着上图的属性来看看如何简单得使用Masonry 这里是Masonry给我们的属性 @property (nonatomic, strong, readonly) MASConstraint *left;         //左侧 @property

iOS开发针对对Masonry下的FPS优化讨论

今天博客的内容就系统的讨论一下Masonry对FSP的影响,以及如何更好的使用Masonry.如果你对iOS开发足够熟悉的话,那么对Masonry框架应该不陌生.简单的说,Masonry的诞生让AutoLayout的使用更为优雅,让控件的布局更为方便.使用辩证的观点来看一个事物的话,凡事都有两面性,Masonry的使用也不例外.Masonry框架的使用不当会直接影响当UI的FPS.今天我们就来讨论一下在使用Masonry时的一些误区,看一下那些影响性能的使用方式.本篇博客我们依然会依托于Demo

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 2015-04-05 15:25 2482人阅读 评论(1) 收藏 举报开源框架 图像: 1.图片浏览控件MWPhotoBrowser       实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.      下载:https://github.com/mwaterfall/MWPhotoBrowser目前比较活跃的社区仍旧是Github,

iOS开发 非常全的三方库、插件、大牛博客等等

UI 下拉刷新 EGOTableViewPullRefresh- 最早的下拉刷新控件. SVPullToRefresh- 下拉刷新控件. MJRefresh- 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.具体使用看"使用方法". (国人写) XHRefreshControl- XHRefreshControl 是一款高扩展性.低耦合度的下拉刷新.上提加载更多的组件.(国人写) CBStoreHo

iOS开发——高级UI&带你玩转UITableView

带你玩装UITableView 在实际iOS开发中UITableView是使用最多,也是最重要的一个控件,如果你不会用它,那别说什么大神了,菜鸟都不如. 其实关于UItableView事非常简单的,实际开发中用起来却没有那么简单就是因为他结合MVC使用,涉及到了模型数据的读取,自定义View,功能的拓展和更好的解藕,下面就带你玩一遍: UITableView的两种样式 UITableViewStylePlain UITableViewStyleGroupeds accessoryType UIT

iOS开发之资料收集

github排名:https://github.com/trending, github搜索:https://github.com/search. 此文章转自github:https://github.com/Tim9Liu9/TimLiu-iOS UI 下拉刷新 EGOTableViewPullRefresh- 最早的下拉刷新控件. SVPullToRefresh- 下拉刷新控件. MJRefresh- 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者

iOS开发实战——CollectionView中cell的间距设置

我在前面多篇博客中详细讲解了CollectionView的使用与自定义CollectionViewCell的设计,可以参考<iOS开发实战--CollectionView点击事件与键盘隐藏结合案例><iOS高级开发--CollectionView修改cell的文本及模型重构>这几篇博客.但是今天还是需要来讲讲CollectionView实现中的一个小小的坑,这是我最近在网上浏览时发现很多开发者经常犯的错,所以我觉得有必要来好好谈一谈. 一个CollectionView控件中,两个c

iOS 开发实践之 Auto Layout

原:http://xuexuefeng.com/autolayout/?utm_source=tuicool 本文是博主 iOS 开发实践系列中的一篇,主要讲述 iOS 中 Auto Layout(自动布局)在实际项目中的使用. Auto Layout 在 2012 年的 iOS 6 中发布,距今已经 2 年多了,如果从 2011 年在 Mac OS X 上发布的 Auto Layout 开始算起,已经超过 3 年了.如果你的简历上写着 2 年以上工作经验,而竟然不会使用 Auto Layout