一、调用Masonry库的准备
使用pch文件添加全局宏定义(Pre-Compiled Header)
pch文件即 扩展名为.pch的预编译文件。是将工程中较稳定的不会经常修改的代码预先编译好,放在一个公共的文件(.pch)里。
0>将Masonry文件拖入项目中
1>新建pch文件
2>选中项目-->TARGETS-->Build Setting(选中All)-->搜索prefi
3>双击并将pch文件拖入框中
4>设置为Yes
5>填入代码
#ifndef PrefixHeader_pch
#define PrefixHeader_pch
//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"
// Include any system framework and library headers here that should be included in all compilation units.
// You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.
#endif /* PrefixHeader_pch */
二 、使用方法
1.Masonry属性
@property (nonatomic, strong, readonly) MASConstraint *left;
@property (nonatomic, strong, readonly) MASConstraint *top;
@property (nonatomic, strong, readonly) MASConstraint *right;
@property (nonatomic, strong, readonly) MASConstraint *bottom;
@property (nonatomic, strong, readonly) MASConstraint *leading;
@property (nonatomic, strong, readonly) MASConstraint *trailing;
@property (nonatomic, strong, readonly) MASConstraint *width;
@property (nonatomic, strong, readonly) MASConstraint *height;
@property (nonatomic, strong, readonly) MASConstraint *centerX;
@property (nonatomic, strong, readonly) MASConstraint *centerY;
@property (nonatomic, strong, readonly) MASConstraint *baseline;
下面是关于这些属性的介绍
2.约束的类型
1.尺寸:width、height、size
2.边界:left、leading、right、trailing、top、bottom
3.中心点:center、centerX、centerY
4.边界:edges
5.偏移量:offset、inset、insets、sizeOffset、centerOffset
6.优先级:priority()约束优先级(0~1000)、priorityLow()\*500*\、priorityMedium()\*500*\、priorityHigh()\*750*\
7.比例:multipliedBy乘因数、 dividedBy除因数
3.两个区别
1>mas_equalTo
和equalTo
:
默认情况下
mas_equalTo
有自动包装功能,比如自动将20
包装为@20
而equalTo
没有自动包装功能。
如果添加了下面的宏,那么mas_equalTo
和equalTo
就没有区别:
#define MAS_SHORTHAND_GLOBALS
2>mas_height
和height
:
默认情况下
width
是make
对象的一个属性,用来添加宽度约束用的,表示对宽度进行约束。mas_width
是一个属性值,用来当做equalTo
的参数,表示某个控件的宽度属性。
如果添加了下面的宏,mas_width
也可以写成width
:
#define MAS_SHORTHAND
4.基本使用
mas_makeConstraints://添加约束
mas_updateConstraints://更新约束、亦可添加新约束
mas_remakeConstraints://重置之前的约束
[view1 mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(superview).with.insets(padding);
}];
5.注意点
使用
Masonry
不需要设置控件的translatesAutoresizingMaskIntoConstraints
属性为NO
;
防止block
中的循环引用,使用弱引用(这是错误观点),在这里block
是局部的引用,block
内部引用self
不会造成循环引用的
__weak typeof (self) weakSelf = self;
(没必要的写法)
网友评论