|
@@ -8,14 +8,83 @@
|
|
|
|
|
|
#import "MASExampleAspectFitView.h"
|
|
|
|
|
|
+@interface MASExampleAspectFitView ()
|
|
|
+@property UIView *topView;
|
|
|
+@property UIView *topInnerView;
|
|
|
+@property UIView *bottomView;
|
|
|
+@property UIView *bottomInnerView;
|
|
|
+@end
|
|
|
+
|
|
|
@implementation MASExampleAspectFitView
|
|
|
|
|
|
-/*
|
|
|
-// Only override drawRect: if you perform custom drawing.
|
|
|
-// An empty implementation adversely affects performance during animation.
|
|
|
-- (void)drawRect:(CGRect)rect {
|
|
|
- // Drawing code
|
|
|
+// Designated initializer
|
|
|
+- (instancetype)init
|
|
|
+{
|
|
|
+ self = [super initWithFrame:CGRectZero];
|
|
|
+
|
|
|
+ if (self) {
|
|
|
+
|
|
|
+ // Create views
|
|
|
+ self.topView = [[UIView alloc] initWithFrame:CGRectZero];
|
|
|
+ self.topInnerView = [[UIView alloc] initWithFrame:CGRectZero];
|
|
|
+ self.bottomView = [[UIView alloc] initWithFrame:CGRectZero];
|
|
|
+ self.bottomInnerView = [[UIView alloc] initWithFrame:CGRectZero];
|
|
|
+
|
|
|
+ // Set background colors
|
|
|
+ UIColor *blueColor = [UIColor colorWithRed:0.663 green:0.796 blue:0.996 alpha:1];
|
|
|
+ [self.topView setBackgroundColor:blueColor];
|
|
|
+
|
|
|
+ UIColor *lightGreenColor = [UIColor colorWithRed:0.784 green:0.992 blue:0.851 alpha:1];
|
|
|
+ [self.topInnerView setBackgroundColor:lightGreenColor];
|
|
|
+
|
|
|
+ UIColor *pinkColor = [UIColor colorWithRed:0.992 green:0.804 blue:0.941 alpha:1];
|
|
|
+ [self.bottomView setBackgroundColor:pinkColor];
|
|
|
+
|
|
|
+ UIColor *darkGreenColor = [UIColor colorWithRed:0.443 green:0.780 blue:0.337 alpha:1];
|
|
|
+ [self.bottomInnerView setBackgroundColor:darkGreenColor];
|
|
|
+
|
|
|
+ // Layout top and bottom views to each take up half of the window
|
|
|
+ [self addSubview:self.topView];
|
|
|
+ [self.topView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.left.right.and.top.equalTo(self);
|
|
|
+ }];
|
|
|
+
|
|
|
+ [self addSubview:self.bottomView];
|
|
|
+ [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.left.right.and.bottom.equalTo(self);
|
|
|
+ make.top.equalTo(self.topView.mas_bottom);
|
|
|
+ make.height.equalTo(self.topView);
|
|
|
+ }];
|
|
|
+
|
|
|
+ // Inner views are configured for aspect fit with ratio of 3:1
|
|
|
+ [self.topView addSubview:self.topInnerView];
|
|
|
+ [self.topInnerView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.width.equalTo(self.topInnerView.mas_height).multipliedBy(3);
|
|
|
+
|
|
|
+ make.width.and.height.lessThanOrEqualTo(self.topView);
|
|
|
+ make.width.and.height.equalTo(self.topView).with.priorityLow();
|
|
|
+
|
|
|
+ make.center.equalTo(self.topView);
|
|
|
+ }];
|
|
|
+
|
|
|
+ [self.bottomView addSubview:self.bottomInnerView];
|
|
|
+ [self.bottomInnerView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.height.equalTo(self.bottomInnerView.mas_width).multipliedBy(3);
|
|
|
+
|
|
|
+ make.width.and.height.lessThanOrEqualTo(self.bottomView);
|
|
|
+ make.width.and.height.equalTo(self.bottomView).with.priorityLow();
|
|
|
+
|
|
|
+ make.center.equalTo(self.bottomView);
|
|
|
+ }];
|
|
|
+ }
|
|
|
+
|
|
|
+ return self;
|
|
|
+}
|
|
|
+
|
|
|
+// Override previous designated initializer
|
|
|
+- (instancetype)initWithFrame:(CGRect)frame
|
|
|
+{
|
|
|
+ return [self init];
|
|
|
}
|
|
|
-*/
|
|
|
|
|
|
@end
|