123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- //
- // 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
|