100 lines
5.3 KiB
Objective-C
100 lines
5.3 KiB
Objective-C
#import "NSLayoutConstraint+PKDownloadButton.h"
|
|
|
|
@implementation NSLayoutConstraint (PKDownloadButton)
|
|
|
|
+ (NSArray *)constraintsForWrappedSubview:(UIView *)view withInsets:(UIEdgeInsets)insets {
|
|
NSArray *horizontalConstraints = [self horizontalConstraintsForWrappedSubview:view withInsets:insets];
|
|
NSArray *verticalConstraints = [self verticalConstraintsForWrappedSubview:view withInsets:insets];
|
|
NSMutableArray *resultArray = [NSMutableArray arrayWithCapacity:[horizontalConstraints count] + [verticalConstraints count]];
|
|
[resultArray addObjectsFromArray:horizontalConstraints];
|
|
[resultArray addObjectsFromArray:verticalConstraints];
|
|
return resultArray;
|
|
}
|
|
|
|
+ (NSArray *)horizontalConstraintsForWrappedSubview:(UIView *)view withInsets:(UIEdgeInsets)insets {
|
|
NSString *horizontalConstraintsFormat = [NSString stringWithFormat:@"H:|-(%d)-[view]-(%d)-|",
|
|
(int)insets.left,
|
|
(int)roundf(insets.right)];
|
|
NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:horizontalConstraintsFormat
|
|
options:0
|
|
metrics:nil
|
|
views:NSDictionaryOfVariableBindings(view)];
|
|
return horizontalConstraints;
|
|
}
|
|
|
|
+ (NSArray *)verticalConstraintsForWrappedSubview:(UIView *)view withInsets:(UIEdgeInsets)insets {
|
|
NSString *verticalConstraintsFormat = [NSString stringWithFormat:@"V:|-(%d)-[view]-(%d)-|", (int)insets.top, (int)insets.bottom];
|
|
NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:verticalConstraintsFormat
|
|
options:0
|
|
metrics:nil
|
|
views:NSDictionaryOfVariableBindings(view)];
|
|
return verticalConstraints;
|
|
}
|
|
|
|
+ (NSLayoutConstraint *)constraintForView:(UIView *)view withWidth:(CGFloat)width {
|
|
return [NSLayoutConstraint constraintWithItem:view
|
|
attribute:NSLayoutAttributeWidth
|
|
relatedBy:NSLayoutRelationEqual
|
|
toItem:nil
|
|
attribute:NSLayoutAttributeNotAnAttribute
|
|
multiplier:1.0
|
|
constant:width];
|
|
}
|
|
|
|
+ (NSLayoutConstraint *)constraintForView:(UIView *)view withHeight:(CGFloat)height {
|
|
return [NSLayoutConstraint constraintWithItem:view
|
|
attribute:NSLayoutAttributeHeight
|
|
relatedBy:NSLayoutRelationEqual
|
|
toItem:nil
|
|
attribute:NSLayoutAttributeNotAnAttribute
|
|
multiplier:1.0
|
|
constant:height];
|
|
}
|
|
|
|
+ (NSArray *)constraintsForView:(UIView *)view withSize:(CGSize)size {
|
|
NSLayoutConstraint *width = [NSLayoutConstraint constraintForView:view
|
|
withWidth:size.width];
|
|
NSLayoutConstraint *height = [NSLayoutConstraint constraintForView:view
|
|
withHeight:size.height];
|
|
return @[width, height];
|
|
}
|
|
|
|
+ (NSArray *)constraintsWithVisualFormat:(NSString *)format views:(NSDictionary *)views {
|
|
return [self constraintsWithVisualFormat:format options:0 metrics:nil views:views];
|
|
}
|
|
|
|
+ (NSLayoutConstraint *)constraintForCenterByXView:(UIView *)overlay withView:(UIView *)view {
|
|
return [NSLayoutConstraint constraintWithItem:overlay
|
|
attribute:NSLayoutAttributeCenterX
|
|
relatedBy:NSLayoutRelationEqual
|
|
toItem:view
|
|
attribute:NSLayoutAttributeCenterX
|
|
multiplier:1.0
|
|
constant:0.0];
|
|
}
|
|
|
|
+ (NSLayoutConstraint *)constraintForCenterByYView:(UIView *)overlay withView:(UIView *)view {
|
|
return [NSLayoutConstraint constraintWithItem:overlay
|
|
attribute:NSLayoutAttributeCenterY
|
|
relatedBy:NSLayoutRelationEqual
|
|
toItem:view
|
|
attribute:NSLayoutAttributeCenterY
|
|
multiplier:1.0
|
|
constant:0.0];
|
|
}
|
|
|
|
+ (NSArray *)constraintsForCenterView:(UIView *)overlay {
|
|
return [self constraintsForCenterView:overlay withView:overlay.superview];
|
|
}
|
|
|
|
+ (NSArray *)constraintsForCenterView:(UIView *)overlay withView:(UIView *)view {
|
|
NSMutableArray *constraints = [NSMutableArray array];
|
|
|
|
[constraints addObject:[self constraintForCenterByXView:overlay withView:view]];
|
|
[constraints addObject:[self constraintForCenterByYView:overlay withView:view]];
|
|
|
|
return constraints;
|
|
}
|
|
|
|
@end
|