New file |
| | |
| | | // |
| | | // MASConstraintMaker.h |
| | | // Masonry |
| | | // |
| | | // Created by Jonas Budelmann on 20/07/13. |
| | | // Copyright (c) 2013 cloudling. All rights reserved. |
| | | // |
| | | |
| | | #import "MASConstraint.h" |
| | | #import "MASUtilities.h" |
| | | |
| | | typedef NS_OPTIONS(NSInteger, MASAttribute) { |
| | | MASAttributeLeft = 1 << NSLayoutAttributeLeft, |
| | | MASAttributeRight = 1 << NSLayoutAttributeRight, |
| | | MASAttributeTop = 1 << NSLayoutAttributeTop, |
| | | MASAttributeBottom = 1 << NSLayoutAttributeBottom, |
| | | MASAttributeLeading = 1 << NSLayoutAttributeLeading, |
| | | MASAttributeTrailing = 1 << NSLayoutAttributeTrailing, |
| | | MASAttributeWidth = 1 << NSLayoutAttributeWidth, |
| | | MASAttributeHeight = 1 << NSLayoutAttributeHeight, |
| | | MASAttributeCenterX = 1 << NSLayoutAttributeCenterX, |
| | | MASAttributeCenterY = 1 << NSLayoutAttributeCenterY, |
| | | MASAttributeBaseline = 1 << NSLayoutAttributeBaseline, |
| | | |
| | | #if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) |
| | | |
| | | MASAttributeFirstBaseline = 1 << NSLayoutAttributeFirstBaseline, |
| | | MASAttributeLastBaseline = 1 << NSLayoutAttributeLastBaseline, |
| | | |
| | | #endif |
| | | |
| | | #if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) |
| | | |
| | | MASAttributeLeftMargin = 1 << NSLayoutAttributeLeftMargin, |
| | | MASAttributeRightMargin = 1 << NSLayoutAttributeRightMargin, |
| | | MASAttributeTopMargin = 1 << NSLayoutAttributeTopMargin, |
| | | MASAttributeBottomMargin = 1 << NSLayoutAttributeBottomMargin, |
| | | MASAttributeLeadingMargin = 1 << NSLayoutAttributeLeadingMargin, |
| | | MASAttributeTrailingMargin = 1 << NSLayoutAttributeTrailingMargin, |
| | | MASAttributeCenterXWithinMargins = 1 << NSLayoutAttributeCenterXWithinMargins, |
| | | MASAttributeCenterYWithinMargins = 1 << NSLayoutAttributeCenterYWithinMargins, |
| | | |
| | | #endif |
| | | |
| | | }; |
| | | |
| | | /** |
| | | * Provides factory methods for creating MASConstraints. |
| | | * Constraints are collected until they are ready to be installed |
| | | * |
| | | */ |
| | | @interface MASConstraintMaker : NSObject |
| | | |
| | | /** |
| | | * The following properties return a new MASViewConstraint |
| | | * with the first item set to the makers associated view and the appropriate MASViewAttribute |
| | | */ |
| | | @property (nonatomic, strong, readonly) MASConstraint *left; |
| | | @property (nonatomic, strong, readonly) MASConstraint *top; |
| | | @property (nonatomic, strong, readonly) MASConstraint *right; |
| | | @property (nonatomic, strong, readonly) MASConstraint *bottom; |
| | | @property (nonatomic, strong, readonly) MASConstraint *leading; |
| | | @property (nonatomic, strong, readonly) MASConstraint *trailing; |
| | | @property (nonatomic, strong, readonly) MASConstraint *width; |
| | | @property (nonatomic, strong, readonly) MASConstraint *height; |
| | | @property (nonatomic, strong, readonly) MASConstraint *centerX; |
| | | @property (nonatomic, strong, readonly) MASConstraint *centerY; |
| | | @property (nonatomic, strong, readonly) MASConstraint *baseline; |
| | | |
| | | #if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100) |
| | | |
| | | @property (nonatomic, strong, readonly) MASConstraint *firstBaseline; |
| | | @property (nonatomic, strong, readonly) MASConstraint *lastBaseline; |
| | | |
| | | #endif |
| | | |
| | | #if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) |
| | | |
| | | @property (nonatomic, strong, readonly) MASConstraint *leftMargin; |
| | | @property (nonatomic, strong, readonly) MASConstraint *rightMargin; |
| | | @property (nonatomic, strong, readonly) MASConstraint *topMargin; |
| | | @property (nonatomic, strong, readonly) MASConstraint *bottomMargin; |
| | | @property (nonatomic, strong, readonly) MASConstraint *leadingMargin; |
| | | @property (nonatomic, strong, readonly) MASConstraint *trailingMargin; |
| | | @property (nonatomic, strong, readonly) MASConstraint *centerXWithinMargins; |
| | | @property (nonatomic, strong, readonly) MASConstraint *centerYWithinMargins; |
| | | |
| | | #endif |
| | | |
| | | /** |
| | | * Returns a block which creates a new MASCompositeConstraint with the first item set |
| | | * to the makers associated view and children corresponding to the set bits in the |
| | | * MASAttribute parameter. Combine multiple attributes via binary-or. |
| | | */ |
| | | @property (nonatomic, strong, readonly) MASConstraint *(^attributes)(MASAttribute attrs); |
| | | |
| | | /** |
| | | * Creates a MASCompositeConstraint with type MASCompositeConstraintTypeEdges |
| | | * which generates the appropriate MASViewConstraint children (top, left, bottom, right) |
| | | * with the first item set to the makers associated view |
| | | */ |
| | | @property (nonatomic, strong, readonly) MASConstraint *edges; |
| | | |
| | | /** |
| | | * Creates a MASCompositeConstraint with type MASCompositeConstraintTypeSize |
| | | * which generates the appropriate MASViewConstraint children (width, height) |
| | | * with the first item set to the makers associated view |
| | | */ |
| | | @property (nonatomic, strong, readonly) MASConstraint *size; |
| | | |
| | | /** |
| | | * Creates a MASCompositeConstraint with type MASCompositeConstraintTypeCenter |
| | | * which generates the appropriate MASViewConstraint children (centerX, centerY) |
| | | * with the first item set to the makers associated view |
| | | */ |
| | | @property (nonatomic, strong, readonly) MASConstraint *center; |
| | | |
| | | /** |
| | | * Whether or not to check for an existing constraint instead of adding constraint |
| | | */ |
| | | @property (nonatomic, assign) BOOL updateExisting; |
| | | |
| | | /** |
| | | * Whether or not to remove existing constraints prior to installing |
| | | */ |
| | | @property (nonatomic, assign) BOOL removeExisting; |
| | | |
| | | /** |
| | | * initialises the maker with a default view |
| | | * |
| | | * @param view any MASConstraint are created with this view as the first item |
| | | * |
| | | * @return a new MASConstraintMaker |
| | | */ |
| | | - (id)initWithView:(MAS_VIEW *)view; |
| | | |
| | | /** |
| | | * Calls install method on any MASConstraints which have been created by this maker |
| | | * |
| | | * @return an array of all the installed MASConstraints |
| | | */ |
| | | - (NSArray *)install; |
| | | |
| | | - (MASConstraint * (^)(dispatch_block_t))group; |
| | | |
| | | @end |