// // UIView+JKConstraint.h // Constraint // // Created by Jack on 2018/12/10. // Copyright © 2018年 Jack Template. All rights reserved. // #import @interface RAConstraint : NSObject @property (nonatomic,readonly,copy) RAConstraint *(^ra_offset)(CGFloat offset); @property (nonatomic,readonly,copy) RAConstraint *(^ra_lessThanOrEqualTo)(RAConstraint *constraint); @property (nonatomic,readonly,copy) RAConstraint *(^ra_equalTo)(RAConstraint *constraint); @property (nonatomic,readonly,copy) RAConstraint *(^ra_greaterThanOrEqualTo)(RAConstraint *constraint); @property (nonatomic,readonly,copy) RAConstraint *(^ra_priority)(UILayoutPriority priority); @property (nonatomic,readonly,copy) RAConstraint *(^ra_append)(NSString *identifier); @property (nonatomic,copy) RAConstraint *(^ra_size_greaterThanOrEqualTo)(CGFloat size); @property (nonatomic,copy) RAConstraint *(^ra_size_lessThanOrEqualTo)(CGFloat size); @property (nonatomic,readonly,copy) void (^ra_modify)(CGFloat constant); @end #pragma mark - Maker @interface RAConstraintMaker : NSObject @property (nonatomic,strong,readonly) RAConstraint *left; @property (nonatomic,strong,readonly) RAConstraint *top; @property (nonatomic,strong,readonly) RAConstraint *right; @property (nonatomic,strong,readonly) RAConstraint *bottom; @property (nonatomic,strong,readonly) RAConstraint *centerX; @property (nonatomic,strong,readonly) RAConstraint *centerY; @property (nonatomic,strong,readonly) RAConstraint *baseLine; @property (nonatomic,strong,readonly) RAConstraint *width; @property (nonatomic,strong,readonly) RAConstraint *height; @property (nonatomic,strong,readonly) RAConstraint *ra_safeAreaLeft API_AVAILABLE(ios(11.0),tvos(11.0)); @property (nonatomic,strong,readonly) RAConstraint *ra_safeAreaTop API_AVAILABLE(ios(11.0),tvos(11.0)); @property (nonatomic,strong,readonly) RAConstraint *ra_safeAreaRight API_AVAILABLE(ios(11.0),tvos(11.0)); @property (nonatomic,strong,readonly) RAConstraint *ra_safeAreaBottom API_AVAILABLE(ios(11.0),tvos(11.0)); // 抗拉伸 @property (nonatomic,assign) UILayoutPriority ra_horizontalHuggingPriority; @property (nonatomic,assign) UILayoutPriority ra_verticalHuggingPriority; // 抗压缩 @property (nonatomic,assign) UILayoutPriority ra_horizontalCompressionResistancePriority; @property (nonatomic,assign) UILayoutPriority ra_verticalCompressionResistancePriority; @end #pragma mark - UIView @interface UIView (RAConstraint) @property (nonatomic,strong,readonly) RAConstraint *left; @property (nonatomic,strong,readonly) RAConstraint *top; @property (nonatomic,strong,readonly) RAConstraint *right; @property (nonatomic,strong,readonly) RAConstraint *bottom; @property (nonatomic,strong,readonly) RAConstraint *centerX; @property (nonatomic,strong,readonly) RAConstraint *centerY; @property (nonatomic,strong,readonly) RAConstraint *baseLine; @property (nonatomic,strong,readonly) RAConstraint *width; @property (nonatomic,strong,readonly) RAConstraint *height; @property (nonatomic,strong,readonly) RAConstraint *ra_safeAreaLeft API_AVAILABLE(ios(11.0),tvos(11.0)); @property (nonatomic,strong,readonly) RAConstraint *ra_safeAreaTop API_AVAILABLE(ios(11.0),tvos(11.0)); @property (nonatomic,strong,readonly) RAConstraint *ra_safeAreaRight API_AVAILABLE(ios(11.0),tvos(11.0)); @property (nonatomic,strong,readonly) RAConstraint *ra_safeAreaBottom API_AVAILABLE(ios(11.0),tvos(11.0)); @property (nonatomic,copy,readonly) void (^ra_modifyConstraint)(NSString *identifier, CGFloat constant); - (void)ra_applyConstraints:(void(^)(RAConstraintMaker *maker))apply; /** * it will remove all of its constraints before installing them again. */ - (void)ra_remakeConstraints:(void(^)(RAConstraintMaker *maker))remake; @end #pragma mark - View Controller @interface UIViewController (RAConstraint) @property (nonatomic,strong,readonly) RAConstraint *ra_topLayoutGuid; @property (nonatomic,strong,readonly) RAConstraint *ra_topLayoutGuidTop; @property (nonatomic,strong,readonly) RAConstraint *ra_topLayoutGuidBottom; @property (nonatomic,strong,readonly) RAConstraint *ra_bottomLayoutGuid; @property (nonatomic,strong,readonly) RAConstraint *ra_bottomLayoutGuidTop; @property (nonatomic,strong,readonly) RAConstraint *ra_bottomLayoutGuidBottom; @end