Masonry框架详细解析(五) —— MASCompositeConstraint类解析(一)

版本记录

版本号 时间
V1.0 2018.07.20

前言

我们做APP界面,也就是布局UI,那么关于布局,我们有很多方法,苹果也都提供了支持,市场上我们用的并不是系统提供原生的layout,对于OC语言一般都是使用一个第三方的布局框架 —— Masonry。接下来几篇我们就一起深入看一下这个框架。感兴趣的看上面几篇文章。
1. Masonry框架详细解析(一) —— 基本概览(一)
2. Masonry框架详细解析(二) —— 基本结构API和约束入口(一)
3. Masonry框架详细解析(三) —— MASConstraintMaker工厂类(一)
4. Masonry框架详细解析(四) —— MASConstraint类解析(一)

API

MASCompositeConstraintMASConstraint的子类,下面我们一起来看一下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类解析(一)_第1张图片

从这我们就可以看到Masonry的组织结构非常清爽,很多方法都在父类定义并在子类重写,子类只保留了一个自定义的示例化方法。

后记

本篇主要讲述了MASCompositeConstraint类解析,感兴趣的给个赞或者关注~~~

Masonry框架详细解析(五) —— MASCompositeConstraint类解析(一)_第2张图片

你可能感兴趣的:(Masonry框架详细解析(五) —— MASCompositeConstraint类解析(一))