Browse Source

Configure views and layout for aspect fit example

Michael Koukoullis 10 năm trước cách đây
mục cha
commit
7184378395
1 tập tin đã thay đổi với 75 bổ sung6 xóa
  1. 75 6
      Examples/Masonry iOS Examples/MASExampleAspectFitView.m

+ 75 - 6
Examples/Masonry iOS Examples/MASExampleAspectFitView.m

@@ -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