Authored by iwill

safeAreaLayoutGuide demo

@@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
32 DD9B4D35183CC980002BF408 /* MASExampleScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = DD9B4D34183CC980002BF408 /* MASExampleScrollView.m */; }; 32 DD9B4D35183CC980002BF408 /* MASExampleScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = DD9B4D34183CC980002BF408 /* MASExampleScrollView.m */; };
33 DDDF60CC181915E300BF7B8B /* MASExampleLabelView.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDF60CB181915E300BF7B8B /* MASExampleLabelView.m */; }; 33 DDDF60CC181915E300BF7B8B /* MASExampleLabelView.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDF60CB181915E300BF7B8B /* MASExampleLabelView.m */; };
34 DDF3875C179D648D00178773 /* MASExampleAnimatedView.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF3875B179D648D00178773 /* MASExampleAnimatedView.m */; }; 34 DDF3875C179D648D00178773 /* MASExampleAnimatedView.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF3875B179D648D00178773 /* MASExampleAnimatedView.m */; };
  35 + DFBACE591F7B76E40047F15A /* MASExampleSafeAreaLayoutGuideViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DFBACE581F7B76E40047F15A /* MASExampleSafeAreaLayoutGuideViewController.m */; };
35 DFBACE5D1F7B86860047F15A /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DFBACE5C1F7B86860047F15A /* Launch Screen.storyboard */; }; 36 DFBACE5D1F7B86860047F15A /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DFBACE5C1F7B86860047F15A /* Launch Screen.storyboard */; };
36 /* End PBXBuildFile section */ 37 /* End PBXBuildFile section */
37 38
@@ -84,6 +85,8 @@ @@ -84,6 +85,8 @@
84 DDDF60CB181915E300BF7B8B /* MASExampleLabelView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MASExampleLabelView.m; sourceTree = "<group>"; }; 85 DDDF60CB181915E300BF7B8B /* MASExampleLabelView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MASExampleLabelView.m; sourceTree = "<group>"; };
85 DDF3875A179D648D00178773 /* MASExampleAnimatedView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MASExampleAnimatedView.h; sourceTree = "<group>"; }; 86 DDF3875A179D648D00178773 /* MASExampleAnimatedView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MASExampleAnimatedView.h; sourceTree = "<group>"; };
86 DDF3875B179D648D00178773 /* MASExampleAnimatedView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MASExampleAnimatedView.m; sourceTree = "<group>"; }; 87 DDF3875B179D648D00178773 /* MASExampleAnimatedView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MASExampleAnimatedView.m; sourceTree = "<group>"; };
  88 + DFBACE571F7B76E30047F15A /* MASExampleSafeAreaLayoutGuideViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MASExampleSafeAreaLayoutGuideViewController.h; sourceTree = "<group>"; };
  89 + DFBACE581F7B76E40047F15A /* MASExampleSafeAreaLayoutGuideViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MASExampleSafeAreaLayoutGuideViewController.m; sourceTree = "<group>"; };
87 DFBACE5C1F7B86860047F15A /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; }; 90 DFBACE5C1F7B86860047F15A /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; };
88 /* End PBXFileReference section */ 91 /* End PBXFileReference section */
89 92
@@ -200,6 +203,8 @@ @@ -200,6 +203,8 @@
200 DD52F250179CADC0005CD195 /* MASExampleViewController.m */, 203 DD52F250179CADC0005CD195 /* MASExampleViewController.m */,
201 DD653E481843E61500D1EC5A /* MASExampleLayoutGuideViewController.h */, 204 DD653E481843E61500D1EC5A /* MASExampleLayoutGuideViewController.h */,
202 DD653E491843E61500D1EC5A /* MASExampleLayoutGuideViewController.m */, 205 DD653E491843E61500D1EC5A /* MASExampleLayoutGuideViewController.m */,
  206 + DFBACE571F7B76E30047F15A /* MASExampleSafeAreaLayoutGuideViewController.h */,
  207 + DFBACE581F7B76E40047F15A /* MASExampleSafeAreaLayoutGuideViewController.m */,
203 ); 208 );
204 name = Controllers; 209 name = Controllers;
205 sourceTree = "<group>"; 210 sourceTree = "<group>";
@@ -344,6 +349,7 @@ @@ -344,6 +349,7 @@
344 27A27D461A6CF0C400D34F52 /* MASExampleAspectFitView.m in Sources */, 349 27A27D461A6CF0C400D34F52 /* MASExampleAspectFitView.m in Sources */,
345 DD52F252179CADC0005CD195 /* MASExampleConstantsView.m in Sources */, 350 DD52F252179CADC0005CD195 /* MASExampleConstantsView.m in Sources */,
346 DD52F253179CADC0005CD195 /* MASExampleListViewController.m in Sources */, 351 DD52F253179CADC0005CD195 /* MASExampleListViewController.m in Sources */,
  352 + DFBACE591F7B76E40047F15A /* MASExampleSafeAreaLayoutGuideViewController.m in Sources */,
347 DD52F254179CADC0005CD195 /* MASExampleSidesView.m in Sources */, 353 DD52F254179CADC0005CD195 /* MASExampleSidesView.m in Sources */,
348 DD32C3FD18E8BFF6001F6AD2 /* MASExampleAttributeChainingView.m in Sources */, 354 DD32C3FD18E8BFF6001F6AD2 /* MASExampleAttributeChainingView.m in Sources */,
349 DD52F255179CADC0005CD195 /* MASExampleViewController.m in Sources */, 355 DD52F255179CADC0005CD195 /* MASExampleViewController.m in Sources */,
@@ -409,7 +415,6 @@ @@ -409,7 +415,6 @@
409 GCC_WARN_UNINITIALIZED_AUTOS = YES; 415 GCC_WARN_UNINITIALIZED_AUTOS = YES;
410 GCC_WARN_UNUSED_FUNCTION = YES; 416 GCC_WARN_UNUSED_FUNCTION = YES;
411 GCC_WARN_UNUSED_VARIABLE = YES; 417 GCC_WARN_UNUSED_VARIABLE = YES;
412 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
413 ONLY_ACTIVE_ARCH = YES; 418 ONLY_ACTIVE_ARCH = YES;
414 SDKROOT = iphoneos; 419 SDKROOT = iphoneos;
415 TARGETED_DEVICE_FAMILY = "1,2"; 420 TARGETED_DEVICE_FAMILY = "1,2";
@@ -449,7 +454,6 @@ @@ -449,7 +454,6 @@
449 GCC_WARN_UNINITIALIZED_AUTOS = YES; 454 GCC_WARN_UNINITIALIZED_AUTOS = YES;
450 GCC_WARN_UNUSED_FUNCTION = YES; 455 GCC_WARN_UNUSED_FUNCTION = YES;
451 GCC_WARN_UNUSED_VARIABLE = YES; 456 GCC_WARN_UNUSED_VARIABLE = YES;
452 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
453 OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 457 OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
454 SDKROOT = iphoneos; 458 SDKROOT = iphoneos;
455 TARGETED_DEVICE_FAMILY = "1,2"; 459 TARGETED_DEVICE_FAMILY = "1,2";
@@ -464,7 +468,6 @@ @@ -464,7 +468,6 @@
464 GCC_PRECOMPILE_PREFIX_HEADER = YES; 468 GCC_PRECOMPILE_PREFIX_HEADER = YES;
465 GCC_PREFIX_HEADER = "Masonry iOS Examples/Masonry iOS Examples-Prefix.pch"; 469 GCC_PREFIX_HEADER = "Masonry iOS Examples/Masonry iOS Examples-Prefix.pch";
466 INFOPLIST_FILE = "Masonry iOS Examples/Masonry iOS Examples-Info.plist"; 470 INFOPLIST_FILE = "Masonry iOS Examples/Masonry iOS Examples-Info.plist";
467 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
468 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.${PRODUCT_NAME:rfc1034identifier}"; 471 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.${PRODUCT_NAME:rfc1034identifier}";
469 PRODUCT_NAME = "Masonry iOS Examples"; 472 PRODUCT_NAME = "Masonry iOS Examples";
470 WRAPPER_EXTENSION = app; 473 WRAPPER_EXTENSION = app;
@@ -478,7 +481,6 @@ @@ -478,7 +481,6 @@
478 GCC_PRECOMPILE_PREFIX_HEADER = YES; 481 GCC_PRECOMPILE_PREFIX_HEADER = YES;
479 GCC_PREFIX_HEADER = "Masonry iOS Examples/Masonry iOS Examples-Prefix.pch"; 482 GCC_PREFIX_HEADER = "Masonry iOS Examples/Masonry iOS Examples-Prefix.pch";
480 INFOPLIST_FILE = "Masonry iOS Examples/Masonry iOS Examples-Info.plist"; 483 INFOPLIST_FILE = "Masonry iOS Examples/Masonry iOS Examples-Info.plist";
481 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
482 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.${PRODUCT_NAME:rfc1034identifier}"; 484 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.${PRODUCT_NAME:rfc1034identifier}";
483 PRODUCT_NAME = "Masonry iOS Examples"; 485 PRODUCT_NAME = "Masonry iOS Examples";
484 WRAPPER_EXTENSION = app; 486 WRAPPER_EXTENSION = app;
@@ -4,7 +4,6 @@ @@ -4,7 +4,6 @@
4 <adaptation id="fullscreen"/> 4 <adaptation id="fullscreen"/>
5 </device> 5 </device>
6 <dependencies> 6 <dependencies>
7 - <deployment identifier="iOS"/>  
8 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13173"/> 7 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13173"/>
9 <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/> 8 <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
10 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> 9 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
@@ -14,18 +13,24 @@ @@ -14,18 +13,24 @@
14 <scene sceneID="EHf-IW-A2E"> 13 <scene sceneID="EHf-IW-A2E">
15 <objects> 14 <objects>
16 <viewController id="01J-lp-oVM" sceneMemberID="viewController"> 15 <viewController id="01J-lp-oVM" sceneMemberID="viewController">
  16 + <layoutGuides>
  17 + <viewControllerLayoutGuide type="top" id="cbD-vd-OFn"/>
  18 + <viewControllerLayoutGuide type="bottom" id="TBi-GG-GBk"/>
  19 + </layoutGuides>
17 <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> 20 <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
18 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> 21 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
19 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 22 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
20 <subviews> 23 <subviews>
21 - <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Copyright © 2017 Jonas Budelmann. All rights reserved." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="obG-Y5-kRd">  
22 - <rect key="frame" x="0.0" y="612.5" width="375" height="20.5"/> 24 + <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="obG-Y5-kRd">
  25 + <rect key="frame" x="47.5" y="592.5" width="281" height="41"/>
  26 + <string key="text">Copyright © 2017 Jonas Budelmann.
  27 +All rights reserved.</string>
23 <fontDescription key="fontDescription" type="system" pointSize="17"/> 28 <fontDescription key="fontDescription" type="system" pointSize="17"/>
24 <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 29 <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
25 <nil key="highlightedColor"/> 30 <nil key="highlightedColor"/>
26 </label> 31 </label>
27 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Masonry" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb"> 32 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Masonry" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
28 - <rect key="frame" x="0.0" y="202" width="375" height="43"/> 33 + <rect key="frame" x="114.5" y="202" width="146" height="43"/>
29 <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/> 34 <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
30 <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 35 <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
31 <nil key="highlightedColor"/> 36 <nil key="highlightedColor"/>
@@ -33,18 +38,16 @@ @@ -33,18 +38,16 @@
33 </subviews> 38 </subviews>
34 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 39 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
35 <constraints> 40 <constraints>
36 - <constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="obG-Y5-kRd" secondAttribute="centerX" id="5cz-MP-9tL"/>  
37 - <constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>  
38 - <constraint firstItem="obG-Y5-kRd" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="SfN-ll-jLj"/> 41 + <constraint firstAttribute="centerX" secondItem="obG-Y5-kRd" secondAttribute="centerX" id="5cz-MP-9tL"/>
  42 + <constraint firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>
39 <constraint firstAttribute="bottom" secondItem="obG-Y5-kRd" secondAttribute="bottom" constant="34" id="Y44-ml-fuU"/> 43 <constraint firstAttribute="bottom" secondItem="obG-Y5-kRd" secondAttribute="bottom" constant="34" id="Y44-ml-fuU"/>
40 <constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/> 44 <constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
41 - <constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/>  
42 </constraints> 45 </constraints>
43 </view> 46 </view>
44 </viewController> 47 </viewController>
45 <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> 48 <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
46 </objects> 49 </objects>
47 - <point key="canvasLocation" x="53" y="375"/> 50 + <point key="canvasLocation" x="52" y="374.66266866566718"/>
48 </scene> 51 </scene>
49 </scenes> 52 </scenes>
50 </document> 53 </document>
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
18 #import "MASExampleRemakeView.h" 18 #import "MASExampleRemakeView.h"
19 #import "MASExampleScrollView.h" 19 #import "MASExampleScrollView.h"
20 #import "MASExampleLayoutGuideViewController.h" 20 #import "MASExampleLayoutGuideViewController.h"
  21 +#import "MASExampleSafeAreaLayoutGuideViewController.h"
21 #import "MASExampleArrayView.h" 22 #import "MASExampleArrayView.h"
22 #import "MASExampleAttributeChainingView.h" 23 #import "MASExampleAttributeChainingView.h"
23 #import "MASExampleAspectFitView.h" 24 #import "MASExampleAspectFitView.h"
@@ -77,6 +78,11 @@ static NSString * const kMASCellReuseIdentifier = @"kMASCellReuseIdentifier"; @@ -77,6 +78,11 @@ static NSString * const kMASCellReuseIdentifier = @"kMASCellReuseIdentifier";
77 self.exampleControllers = [self.exampleControllers arrayByAddingObject:[[MASExampleLayoutGuideViewController alloc] init]]; 78 self.exampleControllers = [self.exampleControllers arrayByAddingObject:[[MASExampleLayoutGuideViewController alloc] init]];
78 } 79 }
79 80
  81 + if ([UIView instancesRespondToSelector:@selector(safeAreaLayoutGuide)])
  82 + {
  83 + self.exampleControllers = [self.exampleControllers arrayByAddingObject:[[MASExampleSafeAreaLayoutGuideViewController alloc] init]];
  84 + }
  85 +
80 return self; 86 return self;
81 } 87 }
82 88
  1 +//
  2 +// MASExampleSafeAreaLayoutGuideViewController.h
  3 +// Masonry iOS Examples
  4 +//
  5 +// Created by MingLQ on 2017-09-27.
  6 +// Copyright © 2017 MingLQ. All rights reserved.
  7 +//
  8 +
  9 +#import <UIKit/UIKit.h>
  10 +
  11 +@interface MASExampleSafeAreaLayoutGuideViewController : UIViewController
  12 +
  13 +@end
  1 +//
  2 +// MASExampleSafeAreaLayoutGuideViewController.m
  3 +// Masonry iOS Examples
  4 +//
  5 +// Created by MingLQ on 2017-09-27.
  6 +// Copyright © 2017 MingLQ. All rights reserved.
  7 +//
  8 +
  9 +#import "MASExampleSafeAreaLayoutGuideViewController.h"
  10 +
  11 +@interface MASExampleSafeAreaLayoutGuideViewController ()
  12 +
  13 +@end
  14 +
  15 +@implementation MASExampleSafeAreaLayoutGuideViewController
  16 +
  17 +- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
  18 + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
  19 + if (self) {
  20 + self.title = @"Safe Area Layout Guides";
  21 + }
  22 + return self;
  23 +}
  24 +
  25 +- (void)viewDidLoad {
  26 + [super viewDidLoad];
  27 +
  28 + self.view.backgroundColor = [UIColor whiteColor];
  29 +
  30 + UIView *view1 = [UIView new];
  31 + view1.backgroundColor = [UIColor redColor];
  32 + [self.view addSubview:view1];
  33 +
  34 + UIView *view2 = [UIView new];
  35 + view2.backgroundColor = [UIColor greenColor];
  36 + [self.view addSubview:view2];
  37 +
  38 + UIView *view3 = [UIView new];
  39 + view3.backgroundColor = [UIColor blueColor];
  40 + [self.view addSubview:view3];
  41 +
  42 + UIView *leftView = [self viewWithName:@"LY"];
  43 + UIView *rightView = [self viewWithName:@"RY"];
  44 + UIView *topView = [self viewWithName:@"TX"];
  45 + UIView *bottomView = [self viewWithName:@"BX"];
  46 +
  47 + UIView *leftTopView = [self viewWithName:@"LT"];
  48 + UIView *rightTopView = [self viewWithName:@"RT"];
  49 + UIView *leftBottomView = [self viewWithName:@"LB"];
  50 + UIView *rightBottomView = [self viewWithName:@"RB"];
  51 +
  52 + UIView *centerView = [self viewWithName:@"XY"];
  53 +
  54 + const CGFloat size = 50.0;
  55 +
  56 + [view1 mas_makeConstraints:^(MASConstraintMaker *make) {
  57 + make.edges.equalTo(self.view.mas_safeArea).inset(10.0);
  58 + }];
  59 +
  60 + [view2 mas_makeConstraints:^(MASConstraintMaker *make) {
  61 + make.center.equalTo(self.view.mas_safeArea);
  62 + make.width.height.equalTo(self.view.mas_safeArea).sizeOffset(CGSizeMake(- 40.0, - 40.0));
  63 + }];
  64 +
  65 + [view3 mas_makeConstraints:^(MASConstraintMaker *make) {
  66 + make.center.equalTo(self.view.mas_safeArea);
  67 + make.width.equalTo(self.view.mas_safeArea).sizeOffset(CGSizeMake(- 60.0, - 60.0));
  68 + make.height.equalTo(self.view.mas_safeArea).sizeOffset(CGSizeMake(- 60.0, - 60.0));
  69 + }];
  70 +
  71 + [leftTopView mas_makeConstraints:^(MASConstraintMaker *make) {
  72 + make.left.top.equalTo(self.view.mas_safeArea);
  73 + make.width.height.equalTo(@(size));
  74 + }];
  75 +
  76 + [rightTopView mas_makeConstraints:^(MASConstraintMaker *make) {
  77 + make.right.equalTo(self.view.mas_safeAreaRight);
  78 + make.top.equalTo(self.view.mas_safeAreaTop);
  79 + make.width.height.equalTo(@(size));
  80 + }];
  81 +
  82 + [leftBottomView mas_makeConstraints:^(MASConstraintMaker *make) {
  83 + make.left.equalTo(self.view.mas_safeAreaLeft);
  84 + make.bottom.equalTo(self.view.mas_safeAreaBottom);
  85 + make.width.height.equalTo(@(size));
  86 + }];
  87 +
  88 + [rightBottomView mas_makeConstraints:^(MASConstraintMaker *make) {
  89 + make.right.bottom.equalTo(self.view.mas_safeArea);
  90 + make.width.height.equalTo(@(size));
  91 + }];
  92 +
  93 + [leftView mas_makeConstraints:^(MASConstraintMaker *make) {
  94 + make.left.centerY.equalTo(self.view.mas_safeArea);
  95 + make.width.height.equalTo(@(size));
  96 + }];
  97 +
  98 + [rightView mas_makeConstraints:^(MASConstraintMaker *make) {
  99 + make.right.equalTo(self.view.mas_safeAreaRight);
  100 + make.centerY.equalTo(self.view.mas_safeAreaCenterY);
  101 + make.width.height.equalTo(@(size));
  102 + }];
  103 +
  104 + [topView mas_makeConstraints:^(MASConstraintMaker *make) {
  105 + make.top.equalTo(self.view.mas_safeAreaTop);
  106 + make.centerX.equalTo(self.view.mas_safeAreaCenterX);
  107 + make.width.height.equalTo(@(size));
  108 + }];
  109 +
  110 + [bottomView mas_makeConstraints:^(MASConstraintMaker *make) {
  111 + make.bottom.centerX.equalTo(self.view.mas_safeArea);
  112 + make.width.height.equalTo(@(size));
  113 + }];
  114 +
  115 + [centerView mas_makeConstraints:^(MASConstraintMaker *make) {
  116 + make.center.equalTo(self.view.mas_safeArea);
  117 + make.width.height.equalTo(@(size));
  118 + }];
  119 +}
  120 +
  121 +- (UIView *)viewWithName:(NSString *)name {
  122 + UILabel *label = [UILabel new];
  123 + label.text = name;
  124 + label.textAlignment = NSTextAlignmentCenter;
  125 + label.textColor = [UIColor blackColor];
  126 + label.backgroundColor = [UIColor yellowColor];
  127 + [self.view addSubview:label];
  128 + return label;
  129 +}
  130 +
  131 +@end
@@ -386,7 +386,6 @@ @@ -386,7 +386,6 @@
386 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 386 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
387 GCC_WARN_UNUSED_FUNCTION = YES; 387 GCC_WARN_UNUSED_FUNCTION = YES;
388 GCC_WARN_UNUSED_VARIABLE = YES; 388 GCC_WARN_UNUSED_VARIABLE = YES;
389 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
390 MACOSX_DEPLOYMENT_TARGET = 10.9; 389 MACOSX_DEPLOYMENT_TARGET = 10.9;
391 MTL_ENABLE_DEBUG_INFO = YES; 390 MTL_ENABLE_DEBUG_INFO = YES;
392 ONLY_ACTIVE_ARCH = YES; 391 ONLY_ACTIVE_ARCH = YES;
@@ -436,7 +435,6 @@ @@ -436,7 +435,6 @@
436 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 435 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
437 GCC_WARN_UNUSED_FUNCTION = YES; 436 GCC_WARN_UNUSED_FUNCTION = YES;
438 GCC_WARN_UNUSED_VARIABLE = YES; 437 GCC_WARN_UNUSED_VARIABLE = YES;
439 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
440 MACOSX_DEPLOYMENT_TARGET = 10.9; 438 MACOSX_DEPLOYMENT_TARGET = 10.9;
441 MTL_ENABLE_DEBUG_INFO = NO; 439 MTL_ENABLE_DEBUG_INFO = NO;
442 TARGETED_DEVICE_FAMILY = "1,2"; 440 TARGETED_DEVICE_FAMILY = "1,2";
@@ -492,7 +490,6 @@ @@ -492,7 +490,6 @@
492 DYLIB_INSTALL_NAME_BASE = "@rpath"; 490 DYLIB_INSTALL_NAME_BASE = "@rpath";
493 INFOPLIST_FILE = Masonry/Info.plist; 491 INFOPLIST_FILE = Masonry/Info.plist;
494 INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 492 INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
495 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
496 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 493 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
497 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.$(PRODUCT_NAME:rfc1034identifier)"; 494 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.$(PRODUCT_NAME:rfc1034identifier)";
498 PRODUCT_NAME = Masonry; 495 PRODUCT_NAME = Masonry;
@@ -511,7 +508,6 @@ @@ -511,7 +508,6 @@
511 DYLIB_INSTALL_NAME_BASE = "@rpath"; 508 DYLIB_INSTALL_NAME_BASE = "@rpath";
512 INFOPLIST_FILE = Masonry/Info.plist; 509 INFOPLIST_FILE = Masonry/Info.plist;
513 INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 510 INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
514 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
515 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 511 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
516 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.$(PRODUCT_NAME:rfc1034identifier)"; 512 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.$(PRODUCT_NAME:rfc1034identifier)";
517 PRODUCT_NAME = Masonry; 513 PRODUCT_NAME = Masonry;
@@ -912,7 +912,6 @@ @@ -912,7 +912,6 @@
912 ENABLE_STRICT_OBJC_MSGSEND = YES; 912 ENABLE_STRICT_OBJC_MSGSEND = YES;
913 GCC_NO_COMMON_BLOCKS = YES; 913 GCC_NO_COMMON_BLOCKS = YES;
914 GCC_PREFIX_HEADER = "Target Support Files/Expecta/Expecta-prefix.pch"; 914 GCC_PREFIX_HEADER = "Target Support Files/Expecta/Expecta-prefix.pch";
915 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
916 MTL_ENABLE_DEBUG_INFO = YES; 915 MTL_ENABLE_DEBUG_INFO = YES;
917 OTHER_LDFLAGS = ""; 916 OTHER_LDFLAGS = "";
918 OTHER_LIBTOOLFLAGS = ""; 917 OTHER_LIBTOOLFLAGS = "";
@@ -937,7 +936,6 @@ @@ -937,7 +936,6 @@
937 GCC_GENERATE_TEST_COVERAGE_FILES = YES; 936 GCC_GENERATE_TEST_COVERAGE_FILES = YES;
938 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; 937 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
939 GCC_NO_COMMON_BLOCKS = YES; 938 GCC_NO_COMMON_BLOCKS = YES;
940 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
941 MACH_O_TYPE = staticlib; 939 MACH_O_TYPE = staticlib;
942 MTL_ENABLE_DEBUG_INFO = NO; 940 MTL_ENABLE_DEBUG_INFO = NO;
943 OTHER_LDFLAGS = ""; 941 OTHER_LDFLAGS = "";
@@ -998,7 +996,6 @@ @@ -998,7 +996,6 @@
998 GCC_WARN_UNINITIALIZED_AUTOS = YES; 996 GCC_WARN_UNINITIALIZED_AUTOS = YES;
999 GCC_WARN_UNUSED_FUNCTION = YES; 997 GCC_WARN_UNUSED_FUNCTION = YES;
1000 GCC_WARN_UNUSED_VARIABLE = YES; 998 GCC_WARN_UNUSED_VARIABLE = YES;
1001 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
1002 ONLY_ACTIVE_ARCH = YES; 999 ONLY_ACTIVE_ARCH = YES;
1003 PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; 1000 PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/;
1004 STRIP_INSTALLED_PRODUCT = NO; 1001 STRIP_INSTALLED_PRODUCT = NO;
@@ -1051,7 +1048,6 @@ @@ -1051,7 +1048,6 @@
1051 GCC_WARN_UNINITIALIZED_AUTOS = YES; 1048 GCC_WARN_UNINITIALIZED_AUTOS = YES;
1052 GCC_WARN_UNUSED_FUNCTION = YES; 1049 GCC_WARN_UNUSED_FUNCTION = YES;
1053 GCC_WARN_UNUSED_VARIABLE = YES; 1050 GCC_WARN_UNUSED_VARIABLE = YES;
1054 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
1055 PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; 1051 PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/;
1056 STRIP_INSTALLED_PRODUCT = NO; 1052 STRIP_INSTALLED_PRODUCT = NO;
1057 SYMROOT = "${SRCROOT}/../build"; 1053 SYMROOT = "${SRCROOT}/../build";
@@ -1070,7 +1066,6 @@ @@ -1070,7 +1066,6 @@
1070 ENABLE_STRICT_OBJC_MSGSEND = YES; 1066 ENABLE_STRICT_OBJC_MSGSEND = YES;
1071 GCC_NO_COMMON_BLOCKS = YES; 1067 GCC_NO_COMMON_BLOCKS = YES;
1072 GCC_PREFIX_HEADER = "Target Support Files/Masonry/Masonry-prefix.pch"; 1068 GCC_PREFIX_HEADER = "Target Support Files/Masonry/Masonry-prefix.pch";
1073 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
1074 MTL_ENABLE_DEBUG_INFO = NO; 1069 MTL_ENABLE_DEBUG_INFO = NO;
1075 OTHER_LDFLAGS = ""; 1070 OTHER_LDFLAGS = "";
1076 OTHER_LIBTOOLFLAGS = ""; 1071 OTHER_LIBTOOLFLAGS = "";
@@ -1094,7 +1089,6 @@ @@ -1094,7 +1089,6 @@
1094 ENABLE_STRICT_OBJC_MSGSEND = YES; 1089 ENABLE_STRICT_OBJC_MSGSEND = YES;
1095 GCC_NO_COMMON_BLOCKS = YES; 1090 GCC_NO_COMMON_BLOCKS = YES;
1096 GCC_PREFIX_HEADER = "Target Support Files/Expecta/Expecta-prefix.pch"; 1091 GCC_PREFIX_HEADER = "Target Support Files/Expecta/Expecta-prefix.pch";
1097 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
1098 MTL_ENABLE_DEBUG_INFO = NO; 1092 MTL_ENABLE_DEBUG_INFO = NO;
1099 OTHER_LDFLAGS = ""; 1093 OTHER_LDFLAGS = "";
1100 OTHER_LIBTOOLFLAGS = ""; 1094 OTHER_LIBTOOLFLAGS = "";
@@ -1118,7 +1112,6 @@ @@ -1118,7 +1112,6 @@
1118 ENABLE_STRICT_OBJC_MSGSEND = YES; 1112 ENABLE_STRICT_OBJC_MSGSEND = YES;
1119 GCC_NO_COMMON_BLOCKS = YES; 1113 GCC_NO_COMMON_BLOCKS = YES;
1120 GCC_PREFIX_HEADER = "Target Support Files/Masonry/Masonry-prefix.pch"; 1114 GCC_PREFIX_HEADER = "Target Support Files/Masonry/Masonry-prefix.pch";
1121 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
1122 MTL_ENABLE_DEBUG_INFO = YES; 1115 MTL_ENABLE_DEBUG_INFO = YES;
1123 OTHER_LDFLAGS = ""; 1116 OTHER_LDFLAGS = "";
1124 OTHER_LIBTOOLFLAGS = ""; 1117 OTHER_LIBTOOLFLAGS = "";
@@ -1141,7 +1134,6 @@ @@ -1141,7 +1134,6 @@
1141 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 1134 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
1142 ENABLE_STRICT_OBJC_MSGSEND = YES; 1135 ENABLE_STRICT_OBJC_MSGSEND = YES;
1143 GCC_NO_COMMON_BLOCKS = YES; 1136 GCC_NO_COMMON_BLOCKS = YES;
1144 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
1145 MACH_O_TYPE = staticlib; 1137 MACH_O_TYPE = staticlib;
1146 MTL_ENABLE_DEBUG_INFO = NO; 1138 MTL_ENABLE_DEBUG_INFO = NO;
1147 OTHER_LDFLAGS = ""; 1139 OTHER_LDFLAGS = "";
@@ -1164,7 +1156,6 @@ @@ -1164,7 +1156,6 @@
1164 DEBUG_INFORMATION_FORMAT = dwarf; 1156 DEBUG_INFORMATION_FORMAT = dwarf;
1165 ENABLE_STRICT_OBJC_MSGSEND = YES; 1157 ENABLE_STRICT_OBJC_MSGSEND = YES;
1166 GCC_NO_COMMON_BLOCKS = YES; 1158 GCC_NO_COMMON_BLOCKS = YES;
1167 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
1168 MACH_O_TYPE = staticlib; 1159 MACH_O_TYPE = staticlib;
1169 MTL_ENABLE_DEBUG_INFO = YES; 1160 MTL_ENABLE_DEBUG_INFO = YES;
1170 OTHER_LDFLAGS = ""; 1161 OTHER_LDFLAGS = "";
@@ -1189,7 +1180,6 @@ @@ -1189,7 +1180,6 @@
1189 GCC_GENERATE_TEST_COVERAGE_FILES = YES; 1180 GCC_GENERATE_TEST_COVERAGE_FILES = YES;
1190 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; 1181 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
1191 GCC_NO_COMMON_BLOCKS = YES; 1182 GCC_NO_COMMON_BLOCKS = YES;
1192 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
1193 MACH_O_TYPE = staticlib; 1183 MACH_O_TYPE = staticlib;
1194 MTL_ENABLE_DEBUG_INFO = YES; 1184 MTL_ENABLE_DEBUG_INFO = YES;
1195 OTHER_LDFLAGS = ""; 1185 OTHER_LDFLAGS = "";
@@ -1212,7 +1202,6 @@ @@ -1212,7 +1202,6 @@
1212 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 1202 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
1213 ENABLE_STRICT_OBJC_MSGSEND = YES; 1203 ENABLE_STRICT_OBJC_MSGSEND = YES;
1214 GCC_NO_COMMON_BLOCKS = YES; 1204 GCC_NO_COMMON_BLOCKS = YES;
1215 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
1216 MACH_O_TYPE = staticlib; 1205 MACH_O_TYPE = staticlib;
1217 MTL_ENABLE_DEBUG_INFO = NO; 1206 MTL_ENABLE_DEBUG_INFO = NO;
1218 OTHER_LDFLAGS = ""; 1207 OTHER_LDFLAGS = "";
@@ -1235,7 +1224,6 @@ @@ -1235,7 +1224,6 @@
1235 DEBUG_INFORMATION_FORMAT = dwarf; 1224 DEBUG_INFORMATION_FORMAT = dwarf;
1236 ENABLE_STRICT_OBJC_MSGSEND = YES; 1225 ENABLE_STRICT_OBJC_MSGSEND = YES;
1237 GCC_NO_COMMON_BLOCKS = YES; 1226 GCC_NO_COMMON_BLOCKS = YES;
1238 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
1239 MACH_O_TYPE = staticlib; 1227 MACH_O_TYPE = staticlib;
1240 MTL_ENABLE_DEBUG_INFO = YES; 1228 MTL_ENABLE_DEBUG_INFO = YES;
1241 OTHER_LDFLAGS = ""; 1229 OTHER_LDFLAGS = "";
@@ -538,7 +538,6 @@ @@ -538,7 +538,6 @@
538 GCC_WARN_UNUSED_FUNCTION = YES; 538 GCC_WARN_UNUSED_FUNCTION = YES;
539 GCC_WARN_UNUSED_VARIABLE = YES; 539 GCC_WARN_UNUSED_VARIABLE = YES;
540 INFOPLIST_FILE = "MasonryTestsLoader/MasonryTestsLoader-Info.plist"; 540 INFOPLIST_FILE = "MasonryTestsLoader/MasonryTestsLoader-Info.plist";
541 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
542 ONLY_ACTIVE_ARCH = YES; 541 ONLY_ACTIVE_ARCH = YES;
543 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.${PRODUCT_NAME:rfc1034identifier}"; 542 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.${PRODUCT_NAME:rfc1034identifier}";
544 PRODUCT_NAME = "$(TARGET_NAME)"; 543 PRODUCT_NAME = "$(TARGET_NAME)";
@@ -586,7 +585,6 @@ @@ -586,7 +585,6 @@
586 GCC_WARN_UNUSED_FUNCTION = YES; 585 GCC_WARN_UNUSED_FUNCTION = YES;
587 GCC_WARN_UNUSED_VARIABLE = YES; 586 GCC_WARN_UNUSED_VARIABLE = YES;
588 INFOPLIST_FILE = "MasonryTestsLoader/MasonryTestsLoader-Info.plist"; 587 INFOPLIST_FILE = "MasonryTestsLoader/MasonryTestsLoader-Info.plist";
589 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
590 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.${PRODUCT_NAME:rfc1034identifier}"; 588 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.${PRODUCT_NAME:rfc1034identifier}";
591 PRODUCT_NAME = "$(TARGET_NAME)"; 589 PRODUCT_NAME = "$(TARGET_NAME)";
592 SDKROOT = iphoneos; 590 SDKROOT = iphoneos;
@@ -636,7 +634,6 @@ @@ -636,7 +634,6 @@
636 GCC_WARN_UNUSED_FUNCTION = YES; 634 GCC_WARN_UNUSED_FUNCTION = YES;
637 GCC_WARN_UNUSED_VARIABLE = YES; 635 GCC_WARN_UNUSED_VARIABLE = YES;
638 INFOPLIST_FILE = "MasonryTests-Info.plist"; 636 INFOPLIST_FILE = "MasonryTests-Info.plist";
639 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
640 ONLY_ACTIVE_ARCH = YES; 637 ONLY_ACTIVE_ARCH = YES;
641 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.${PRODUCT_NAME:rfc1034identifier}"; 638 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.${PRODUCT_NAME:rfc1034identifier}";
642 PRODUCT_NAME = "$(TARGET_NAME)"; 639 PRODUCT_NAME = "$(TARGET_NAME)";
@@ -680,7 +677,6 @@ @@ -680,7 +677,6 @@
680 GCC_WARN_UNUSED_FUNCTION = YES; 677 GCC_WARN_UNUSED_FUNCTION = YES;
681 GCC_WARN_UNUSED_VARIABLE = YES; 678 GCC_WARN_UNUSED_VARIABLE = YES;
682 INFOPLIST_FILE = "MasonryTests-Info.plist"; 679 INFOPLIST_FILE = "MasonryTests-Info.plist";
683 - IPHONEOS_DEPLOYMENT_TARGET = 8.0;  
684 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.${PRODUCT_NAME:rfc1034identifier}"; 680 PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.${PRODUCT_NAME:rfc1034identifier}";
685 PRODUCT_NAME = "$(TARGET_NAME)"; 681 PRODUCT_NAME = "$(TARGET_NAME)";
686 SDKROOT = iphoneos; 682 SDKROOT = iphoneos;