原理:布局
1)约束生成;MASConstraintMaker;it
2)缺省补齐:class
- (void)setSecondViewAttribute:(id)secondViewAttribute {原理
if ([secondViewAttribute isKindOfClass:NSValue.class]) {layout
[self setLayoutConstantWithValue:secondViewAttribute];数据
} else if ([secondViewAttribute isKindOfClass:MAS_VIEW.class]) {view
_secondViewAttribute = [[MASViewAttribute alloc] initWithView:secondViewAttribute layoutAttribute:self.firstViewAttribute.layoutAttribute];vi
} else if ([secondViewAttribute isKindOfClass:MASViewAttribute.class]) {ant
_secondViewAttribute = secondViewAttribute;sse
} else {
NSAssert(NO, @"attempting to add unsupported attribute: %@", secondViewAttribute);
}
}
3)寻找约束添加视图,并添加
if (self.secondViewAttribute.view) {
MAS_VIEW *closestCommonSuperview = [self.firstViewAttribute.view mas_closestCommonSuperview:self.secondViewAttribute.view];
NSAssert(closestCommonSuperview,
@"couldn't find a common superview for %@ and %@",
self.firstViewAttribute.view, self.secondViewAttribute.view);
self.installedView = closestCommonSuperview;
} else if (self.firstViewAttribute.isSizeAttribute) {
self.installedView = self.firstViewAttribute.view;
} else {
self.installedView = self.firstViewAttribute.view.superview;
}
4)
(1)绝对尺寸信息添加到自身;
(2)绝对布局数据添加到父视图;
(3)参考系属性缺失补全为目标属性。