Skip to content. | Skip to navigation

Personal tools

Sections

constraintsForFlowing:

@implementation NSLayoutConstraint (MDBAddons)

+(NSArray*) constraintsForFlowing:(NSArray *)views inContainingView:(UIView *)container forOrientation:(UILayoutConstraintAxis)axis withSpacing:(CGFloat)spacing {

    NSMutableArray* constraints = [NSMutableArray new];

    if (views.count > 0) {
        
        NSInteger viewIndex;

        UIView* firstView = [views firstObject];
        UIView* lastView = [views lastObject];
        
        NSLayoutAttribute firstEdgeAttribute;
        NSLayoutAttribute lastEdgeAttribute;

        if (axis == UILayoutConstraintAxisVertical) {
            firstEdgeAttribute = NSLayoutAttributeTop;
            lastEdgeAttribute = NSLayoutAttributeBottom;
        } else {
            firstEdgeAttribute = NSLayoutAttributeLeft;
            lastEdgeAttribute = NSLayoutAttributeRight;
        }
        
        [constraints addObject: [NSLayoutConstraint constraintWithItem: container
                                                             attribute: firstEdgeAttribute
                                                             relatedBy: NSLayoutRelationEqual
                                                                toItem: firstView
                                                             attribute: firstEdgeAttribute
                                                            multiplier: 1.0
                                                              constant: 0.0]];
                
        for (viewIndex = 1; viewIndex < views.count ; viewIndex++) {
            //
            UIView* prevView = views[viewIndex-1];
            UIView* view = views[viewIndex];
            
            [constraints addObject: [NSLayoutConstraint constraintWithItem: view
                                                                 attribute: firstEdgeAttribute
                                                                 relatedBy: NSLayoutRelationEqual
                                                                    toItem: prevView
                                                                 attribute: lastEdgeAttribute
                                                                multiplier: 1.0
                                                                  constant: spacing]];
            
        }
        
        [constraints addObject: [NSLayoutConstraint constraintWithItem: lastView
                                                             attribute: lastEdgeAttribute
                                                             relatedBy: NSLayoutRelationEqual
                                                                toItem: container
                                                             attribute: lastEdgeAttribute
                                                            multiplier: 1.0
                                                              constant: 0.0]];
        
    }
    
    return constraints;
}

@end