版本记录
版本号 | 时间 |
---|---|
V1.0 | 2018.07.20 |
前言
我们做APP界面,也就是布局UI,那么关于布局,我们有很多方法,苹果也都提供了支持,市场上我们用的并不是系统提供原生的layout,对于OC语言一般都是使用一个第三方的布局框架 —— Masonry。接下来几篇我们就一起深入看一下这个框架。感兴趣的看上面几篇文章。
1. Masonry框架详细解析(一) —— 基本概览(一)
2. Masonry框架详细解析(二) —— 基本结构API和约束入口(一)
3. Masonry框架详细解析(三) —— MASConstraintMaker工厂类(一)
4. Masonry框架详细解析(四) —— MASConstraint类解析(一)
API
MASCompositeConstraint
是MASConstraint
的子类,下面我们一起来看一下API文档。
#import "MASConstraint.h"
#import "MASUtilities.h"
/**
* A group of MASConstraint objects
*/
@interface MASCompositeConstraint : MASConstraint
/**
* Creates a composite with a predefined array of children
*
* @param children child MASConstraints
*
* @return a composite constraint
*/
- (id)initWithChildren:(NSArray *)children;
@end
该类只有一个实例化方法,用于实例化对象,传入的参数children
,为约束数组,利用这个数组进行合成约束。
在其.m
中不仅实现了这个实例化方法,还重写了很多MASConstrain
方法。并设置代理和实现了MASConstraintDelegate
。我们首先看一下这个实例化方法。
@property (nonatomic, strong) NSMutableArray *childConstraints;
- (id)initWithChildren:(NSArray *)children {
self = [super init];
if (!self) return nil;
//实例化可变数组
_childConstraints = [children mutableCopy];
//遍历数组,为每个对象设置代理
for (MASConstraint *constraint in _childConstraints) {
constraint.delegate = self;
}
return self;
}
组织结构
下面看一下内部的组织结构,如下图所示:
从这我们就可以看到Masonry的组织结构非常清爽,很多方法都在父类定义并在子类重写,子类只保留了一个自定义的示例化方法。
后记
本篇主要讲述了MASCompositeConstraint类解析,感兴趣的给个赞或者关注~~~