...
|
...
|
@@ -38,4 +38,127 @@ |
|
|
return constraints;
|
|
|
}
|
|
|
|
|
|
- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedSpacing:(CGFloat)fixedSpacing leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing {
|
|
|
if (self.count < 2) {
|
|
|
NSAssert(self.count>1,@"views to distribute need to bigger than one");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
MAS_VIEW *tempSuperView = [self mas_commonSuperviewOfViews];
|
|
|
if (axisType == MASAxisTypeHorizontal) {
|
|
|
MAS_VIEW *prev;
|
|
|
for (int i = 0; i < self.count; i++) {
|
|
|
MAS_VIEW *v = [self objectAtIndex:i];
|
|
|
[v mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
if (prev) {
|
|
|
make.width.equalTo(prev);
|
|
|
make.left.equalTo(prev.mas_right).offset(fixedSpacing);
|
|
|
if (i == (CGFloat)self.count - 1) {//last one
|
|
|
make.right.equalTo(tempSuperView).offset(-tailSpacing);
|
|
|
}
|
|
|
}
|
|
|
else {//first one
|
|
|
make.left.equalTo(tempSuperView).offset(leadSpacing);
|
|
|
}
|
|
|
|
|
|
}];
|
|
|
prev = v;
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
MAS_VIEW *prev;
|
|
|
for (int i = 0; i < self.count; i++) {
|
|
|
MAS_VIEW *v = [self objectAtIndex:i];
|
|
|
[v mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
if (prev) {
|
|
|
make.height.equalTo(prev);
|
|
|
make.top.equalTo(prev.mas_bottom).offset(fixedSpacing);
|
|
|
if (i == (CGFloat)self.count - 1) {//last one
|
|
|
make.bottom.equalTo(tempSuperView).offset(-tailSpacing);
|
|
|
}
|
|
|
}
|
|
|
else {//first one
|
|
|
make.top.equalTo(tempSuperView).offset(leadSpacing);
|
|
|
}
|
|
|
|
|
|
}];
|
|
|
prev = v;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedItemLength:(CGFloat)fixedItemLength leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing {
|
|
|
if (self.count < 2) {
|
|
|
NSAssert(self.count>1,@"views to distribute need to bigger than one");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
MAS_VIEW *tempSuperView = [self mas_commonSuperviewOfViews];
|
|
|
if (axisType == MASAxisTypeHorizontal) {
|
|
|
MAS_VIEW *prev;
|
|
|
for (int i = 0; i < self.count; i++) {
|
|
|
MAS_VIEW *v = [self objectAtIndex:i];
|
|
|
[v mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
if (prev) {
|
|
|
CGFloat offset = (1-(i/((CGFloat)self.count-1)))*(fixedItemLength+leadSpacing)-i*tailSpacing/(((CGFloat)self.count-1));
|
|
|
make.width.equalTo(@(fixedItemLength));
|
|
|
if (i == (CGFloat)self.count - 1) {//last one
|
|
|
make.right.equalTo(tempSuperView).offset(-tailSpacing);
|
|
|
}
|
|
|
else {
|
|
|
make.right.equalTo(tempSuperView).multipliedBy(i/((CGFloat)self.count-1)).with.offset(offset);
|
|
|
}
|
|
|
}
|
|
|
else {//first one
|
|
|
make.left.equalTo(tempSuperView).offset(leadSpacing);
|
|
|
make.width.equalTo(@(fixedItemLength));
|
|
|
}
|
|
|
}];
|
|
|
prev = v;
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
MAS_VIEW *prev;
|
|
|
for (int i = 0; i < self.count; i++) {
|
|
|
MAS_VIEW *v = [self objectAtIndex:i];
|
|
|
[v mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
if (prev) {
|
|
|
CGFloat offset = (1-(i/((CGFloat)self.count-1)))*(fixedItemLength+leadSpacing)-i*tailSpacing/(((CGFloat)self.count-1));
|
|
|
make.height.equalTo(@(fixedItemLength));
|
|
|
if (i == (CGFloat)self.count - 1) {//last one
|
|
|
make.bottom.equalTo(tempSuperView).offset(-tailSpacing);
|
|
|
}
|
|
|
else {
|
|
|
make.bottom.equalTo(tempSuperView).multipliedBy(i/((CGFloat)self.count-1)).with.offset(offset);
|
|
|
}
|
|
|
}
|
|
|
else {//first one
|
|
|
make.top.equalTo(tempSuperView).offset(leadSpacing);
|
|
|
make.height.equalTo(@(fixedItemLength));
|
|
|
}
|
|
|
}];
|
|
|
prev = v;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- (MAS_VIEW *)mas_commonSuperviewOfViews
|
|
|
{
|
|
|
MAS_VIEW *commonSuperview = nil;
|
|
|
MAS_VIEW *previousView = nil;
|
|
|
for (id object in self) {
|
|
|
if ([object isKindOfClass:[MAS_VIEW class]]) {
|
|
|
MAS_VIEW *view = (MAS_VIEW *)object;
|
|
|
if (previousView) {
|
|
|
commonSuperview = [view mas_closestCommonSuperview:commonSuperview];
|
|
|
} else {
|
|
|
commonSuperview = view;
|
|
|
}
|
|
|
previousView = view;
|
|
|
}
|
|
|
}
|
|
|
NSAssert(commonSuperview, @"Can't constrain views that do not share a common superview. Make sure that all the views in this array have been added into the same view hierarchy.");
|
|
|
return commonSuperview;
|
|
|
}
|
|
|
|
|
|
@end |
...
|
...
|
|