美文网首页 iOS进阶之Masonry
iOS进阶之masonry细致入微_Public

iOS进阶之masonry细致入微_Public

作者: 天蓬大元 | 来源:发表于2019-01-22 14:00 被阅读4次

    一,先上图

    Public
    对喽,我们今天的主角,就是图中标记的这四个文件。
    这部分名字叫做Public,顾名思义,这部分给我们提供了简洁好用的,如系统API一样体验的方法。也是我们最常用的部分。

    二,View+MASAdditions

    这个是我最常用的部分。分类我们不用再提。我们直接看代码
    ///这个类前文有介绍,这里不多言。
    #import "MASUtilities.h"
    ///这位,前文也有提到,就是我们的爱丽丝小姐。如果忘记了,请大家移步细致入微(二)。
    ///我们这个库是要干什么呢?对,将约束葛二蛋四兄弟添加到乔治身上。但并不是设置一个添加一个,而是收集完约束一块添加。那么问题来了,谁收集呢?哎,就是这位爱丽丝小姐收集。
    #import "MASConstraintMaker.h"
    ///这个类之前我们有提到,但并没有深究。这里也不打算深究。但可以提一提。
    /**这两行代码不知道你还有没有印象?这个newConstraint就是葛二蛋,viewAttribute持有了乔治和将要添加的约束。葛二蛋持有了viewAttribute。想想吧。
    *MASViewAttribute *viewAttribute =
      [[MASViewAttribute alloc] initWithView:self.view
                             layoutAttribute:layoutAttribute];
    *MASViewConstraint *newConstraint = 
      [[MASViewConstraint alloc] initWithFirstViewAttribute:viewAttribute];
    */
    #import "MASViewAttribute.h"
    
    /**
     *  Provides constraint maker block
     *  and convience methods for creating MASViewAttribute which are view + NSLayoutAttribute pairs
     */
    @interface MAS_VIEW (MASAdditions)
    
    /**
     *  following properties return a new MASViewAttribute with current view and appropriate     NSLayoutAttribute
     */
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_left;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_top;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_right;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottom;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_leading;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_trailing;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_width;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_height;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_centerX;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_centerY;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_baseline;
    @property (nonatomic, strong, readonly) MASViewAttribute *(^mas_attribute)(NSLayoutAttribute attr);
    
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_firstBaseline;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_lastBaseline;
    
    #if TARGET_OS_IPHONE || TARGET_OS_TV
    
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_leftMargin;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_rightMargin;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_topMargin;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomMargin;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_leadingMargin;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_trailingMargin;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_centerXWithinMargins;
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_centerYWithinMargins;
    
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuide NS_AVAILABLE_IOS(11.0);
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideLeading NS_AVAILABLE_IOS(11.0);
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideTrailing NS_AVAILABLE_IOS(11.0);
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideLeft NS_AVAILABLE_IOS(11.0);
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideRight NS_AVAILABLE_IOS(11.0);
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideTop NS_AVAILABLE_IOS(11.0);
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideBottom NS_AVAILABLE_IOS(11.0);
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideWidth NS_AVAILABLE_IOS(11.0);
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideHeight NS_AVAILABLE_IOS(11.0);
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideCenterX NS_AVAILABLE_IOS(11.0);
    @property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideCenterY NS_AVAILABLE_IOS(11.0);
    
    #endif
    
    
    #pragma mark - --key--
    
    /**
     *  a key to associate with this view
     */
    @property (nonatomic, strong) id mas_key;
    
    /**
     *  Finds the closest common superview between this view and another view
     *  查找此视图与另一个视图之间最近的公共超级视图
     *  @param  view    other view
     *
     *  @return returns nil if common superview could not be found
     */
    - (instancetype)mas_closestCommonSuperview:(MAS_VIEW *)view;
    
    /**
     *  Creates a MASConstraintMaker with the callee view.
     *  Any constraints defined are added to the view or the appropriate superview once the block has finished executing
     *
     *  @param block scope within which you can build up the constraints which you wish to apply to the view.
     *
     *  @return Array of created MASConstraints
     */
    - (NSArray *)mas_makeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;
    
    /**
     *  Creates a MASConstraintMaker with the callee view.
     *  Any constraints defined are added to the view or the appropriate superview once the block has finished executing.
     *  If an existing constraint exists then it will be updated instead.
     *
     *  @param block scope within which you can build up the constraints which you wish to apply to the view.
     *
     *  @return Array of created/updated MASConstraints
     */
    - (NSArray *)mas_updateConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;
    
    /**
     *  Creates a MASConstraintMaker with the callee view.
     *  Any constraints defined are added to the view or the appropriate superview once the block has finished executing.
     *  All constraints previously installed for the view will be removed.
     *
     *  @param block scope within which you can build up the constraints which you wish to apply to the view.
     *
     *  @return Array of created/updated MASConstraints
     */
    - (NSArray *)mas_remakeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;
    
    @end
    

    相关文章

      网友评论

        本文标题:iOS进阶之masonry细致入微_Public

        本文链接:https://www.haomeiwen.com/subject/wvmljqtx.html