zoukankan      html  css  js  c++  java
  • Masonry 原理与使用说明

    原理:

    1)约束生成;MASConstraintMaker;

    2)缺省补齐:

    - (void)setSecondViewAttribute:(id)secondViewAttribute {

        if ([secondViewAttribute isKindOfClass:NSValue.class]) {

            [self setLayoutConstantWithValue:secondViewAttribute];

        } else if ([secondViewAttribute isKindOfClass:MAS_VIEW.class]) {

            _secondViewAttribute = [[MASViewAttribute alloc] initWithView:secondViewAttribute layoutAttribute:self.firstViewAttribute.layoutAttribute];

        } else if ([secondViewAttribute isKindOfClass:MASViewAttribute.class]) {

            _secondViewAttribute = secondViewAttribute;

        } 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)参考系属性缺失补全为目标属性。

  • 相关阅读:
    [LeetCode 049] Group Anagrams
    [LeetCode 033] Search in Rotated Sorted Array
    [LeetCode 024] Swap Nodes in Pairs
    [LeetCode 016] 3Sum Closest
    [LeetCode 015] 3Sum
    [LeetCode 013] Roman to Integer
    [LeetCode 008] String to Integer (atoi)
    [LeetCode 007] Reverse Integer
    第四课:文件操作【解密】
    第三课:文件操作【逐步浅入,深入加解法】
  • 原文地址:https://www.cnblogs.com/feng9exe/p/7929779.html
Copyright © 2011-2022 走看看