Masonry框架的整合和使用

来源:互联网 发布:软件测试文档包括 编辑:程序博客网 时间:2024/05/26 02:55

Masonry框架的使用

一、准备工作

1.1CocoaPods简介

CocoaPods是一个用于管理iOS开发中用到的第三方开源库的插件,CocoaPods能所提供的功能是搜索,下载和更新在git hub上的iOS相关第三方开源库,是iOS中最常用也是最有名的类库管理工具了

1.2CocoaPods安装

因为macOS新版本中已经安装好了Ruby环境,那么安装CocoaPods只需要一行代码:sudo gem install cocoapods (需要翻墙的),成功之后使用pod setup来进行安装(非常慢),所以我们换一个办法,先cd到cd ~/.cocoapods/repos,然后使用git clone https://github.com/CocoaPods/Specs.git,把github上的CocoaPods的内容赋值到repos文件夹底下,然后到finder中command+shift+G打开路径输入,到repos文件夹里把这个Specs文件夹重命名为master即完成了CocoaPods的安装

1.3安装Masonry框架

之后cd到工程目录底下,创建一个Podfile文件,这个文件是第三方类库文件的总管,用它可以管理该工程内的所有第三方类库,可以进行更新,删除,和批量下载,创建好之后vi Podfile打开,在里面首先写入工程部署的iOS最低版本号,比如platform :ios,’8.0’,然后写入target,以及针对这个target引入的第三方类,比如这里写图片描述
esc退出编辑:wq保存退出,然后用pod install即可。Pod的命令很多,常见的比如pod search Masonry ,可以搜索关键字相对应的所有在github上有的第三方类库,搜索结果会给出如何导入,和所有版本号,十分的方便。

二、使用框架

1.1Masonry简介

Masonry又叫自适应布局,他所实现的功能其实非常简单,就是定义一个view,在它的上层view,或者平行view,或者下层view的位置,通过添加约束的方法进行实现。约束有几种,分别是边距,宽,高,左上右下距离,基准线,添加过约束之后可以进行修正,修正有offset(位移)和multipliedBy(倍率)修正。

1.2Masonry如何引入

在需要使用的地方引入头文件 #import “Masonry.h”
位移和倍率修正语法一般是 make.equalTo or make.greaterThanOrEqualTo or make.lessThanOrEqualTo + 倍数和位移修正。

注意点1: 使用 mas_makeConstraints方法的元素必须事先添加到父元素的中,例如[self.view addSubview:view];

注意点2: masequalTo 和 equalTo 区别:masequalTo 比equalTo多了类型转换操作,一般来说,大多数时候两个方法都是 通用的,但是对于数值元素使用mas_equalTo。对于对象或是多个属性的处理,使用equalTo。特别是多个属性时,必须使用equalTo,例如 make.left.and.right.equalTo(self.view);

注意点3: 注意到方法with和and,这连个方法其实没有做任何操作,方法只是返回对象本身,这这个方法的左右完全是为了方法写的时候的可读性 。make.left.and.right.equalTo(self.view);和make.left.right.equalTo(self.view);是完全一样的,但是明显的加了and方法的语句可读性 更好点。

结合了Masonry的工程里的约束写起来一般是这样的
这里写图片描述
三个核心的方法
添加约束

- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block {
}

更新约束

- (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *))block {
}

重写约束

- (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block {
}

1.3如何更简便的使用Masonry

两个很重要的宏:
我们刚接触Masonry的时候可能对于什么时候写mas
什么时候需要传递NSNumber对象比较糊涂
框架的作者也考虑到了这个问题
为我们提供了两个宏解决了上面的问题
只要把这个两个宏复制到项目里就完美解决

//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

0 0
原创粉丝点击