diff options
Diffstat (limited to 'ios-bootstrap/safety-dance/AutoGrid.m')
-rw-r--r-- | ios-bootstrap/safety-dance/AutoGrid.m | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/ios-bootstrap/safety-dance/AutoGrid.m b/ios-bootstrap/safety-dance/AutoGrid.m deleted file mode 100644 index 2a8d3ed..0000000 --- a/ios-bootstrap/safety-dance/AutoGrid.m +++ /dev/null @@ -1,106 +0,0 @@ -// -// AutoGrid.m -// SafetyDance -// -// Created by Nicholas Allegra on 1/26/15. -// Copyright (c) 2015 Nicholas Allegra. All rights reserved. -// - -#import "AutoGrid.h" - -@implementation AutoGrid -- (void)setViews:(NSArray *)_views { - views = _views; - [scrollView removeFromSuperview]; - scrollView = [[UIScrollView alloc] init]; - [self addSubview:scrollView]; - for (UIView *view in views) - [scrollView addSubview:view]; - [self setNeedsLayout]; -} - -- (void)layoutSubviews { - scrollView.frame = self.bounds; - CGFloat paddingX = 22, paddingY = 10; - NSUInteger nviews = [views count]; - CGSize *sizes = malloc(sizeof(*sizes) * nviews); - - for (NSUInteger i = 0; i < nviews; i++) - sizes[i] = [[views objectAtIndex:i] intrinsicContentSize]; - - CGFloat availableWidth = self.bounds.size.width; - /* try to lay out using an increasing number of columns */ - NSUInteger cols; - CGSize contentSize; - CGFloat *colWidths = NULL; - for (cols = 1; ; cols++) { - free(colWidths); - colWidths = malloc(sizeof(*colWidths) * cols); - for (NSUInteger col = 0; col < cols; col++) - colWidths[col] = 0; - CGFloat tentativeHeight = 0; - CGFloat tentativeWidth = 0; - for (NSUInteger row = 0; row < nviews / cols; row++) { - CGFloat totalWidth = 0; - CGFloat maxHeight = 0; - for (NSUInteger col = 0; col < cols; col++) { - NSUInteger i = row * cols + col; - if (i >= nviews) - goto done1; - CGSize size = sizes[i]; - if (size.width > colWidths[col]) - colWidths[col] = size.width; - if (col != 0) - totalWidth += paddingX; - totalWidth += size.width; - if (size.height > maxHeight) - maxHeight = size.height; - } - if (totalWidth > tentativeWidth) - tentativeWidth = totalWidth; - tentativeHeight += maxHeight + paddingY; - } - done1: - if (cols > 1 && tentativeWidth > availableWidth) { - cols--; - break; - } - contentSize = CGSizeMake(tentativeWidth, tentativeHeight); - NSLog(@"%f", contentSize.height); - if (contentSize.width == 0) - break; - - } - scrollView.contentSize = contentSize; - CGFloat y = 0; - for (NSUInteger row = 0; ; row++) { - CGFloat x = 0; - CGFloat maxHeight = 0; - for (NSUInteger col = 0; col < cols; col++) { - NSUInteger i = row * cols + col; - if (i >= nviews) - goto done2; - CGSize size = sizes[i]; - UIView *view = [views objectAtIndex:i]; - if (col != 0) - x += paddingX; - view.frame = CGRectMake(x, y, size.width, size.height); - x += colWidths[col]; - if (size.height > maxHeight) - maxHeight = size.height; - } - y += maxHeight + paddingY; - } -done2: - free(sizes); - free(colWidths); -} -/* -// Only override drawRect: if you perform custom drawing. -// An empty implementation adversely affects performance during animation. -- (void)drawRect:(CGRect)rect { - // Drawing code -} -*/ - -@end |