diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 00000000..50619027
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,22 @@
+
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ branches:
+ - master
+jobs:
+ build:
+ runs-on: macOS-latest
+ steps:
+ - name: Test
+ uses: actions/checkout@v2
+ - name: Build for iOS
+ run: xcodebuild -workspace 'Masonry.xcworkspace' -scheme 'Masonry' -configuration Debug -sdk iphonesimulator clean build ARCHS=x86_64 VALID_ARCHS=x86_64 ONLY_ACTIVE_ARCH=NO
+ - name: Build for macOS
+ run: xcodebuild -workspace 'Masonry.xcworkspace' -scheme 'Masonry' -configuration Debug -sdk macosx clean build
+ - name: Build and Test
+ run: xcodebuild -workspace 'Masonry.xcworkspace' -scheme 'Masonry iOS Tests' -configuration Debug -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 8' clean test ARCHS=x86_64 VALID_ARCHS=x86_64 ONLY_ACTIVE_ARCH=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES
+ - name: Upload coverage to Codecov
+ uses: codecov/codecov-action@v1.2.1
diff --git a/.travis.yml b/.travis.yml
index 765668b7..fc099026 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,16 +1,17 @@
---
language: objective-c
-osx_image: xcode9
+osx_image: xcode12.5
before_install:
- - sudo easy_install cpp-coveralls
+ - curl -L https://bootstrap.pypa.io/pip/2.7/get-pip.py | sudo python
+ - sudo pip install cpp-coveralls
- gem install xcpretty -N
- export LANG=en_US.UTF-8
script:
- set -o pipefail
- - xcodebuild -workspace 'Masonry.xcworkspace' -scheme 'Masonry iOS Tests' -configuration Debug -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.0' clean test ARCHS=i386 VALID_ARCHS=i386 ONLY_ACTIVE_ARCH=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES | xcpretty -c
- - xcodebuild -workspace 'Masonry.xcworkspace' -scheme 'Masonry iOS' -configuration Debug -sdk iphonesimulator clean build ARCHS=i386 VALID_ARCHS=i386 ONLY_ACTIVE_ARCH=NO | xcpretty -c
- - xcodebuild -workspace 'Masonry.xcworkspace' -scheme 'Masonry OSX' -configuration Debug clean build | xcpretty -c
+ - xcodebuild -workspace 'Masonry.xcworkspace' -scheme 'Masonry iOS Tests' -configuration Debug -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 8' clean test ARCHS=x86_64 VALID_ARCHS=x86_64 ONLY_ACTIVE_ARCH=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES | xcpretty -c
+ - xcodebuild -workspace 'Masonry.xcworkspace' -scheme 'Masonry' -configuration Debug -sdk iphonesimulator clean build ARCHS=x86_64 VALID_ARCHS=x86_64 ONLY_ACTIVE_ARCH=NO | xcpretty -c
+ - xcodebuild -workspace 'Masonry.xcworkspace' -scheme 'Masonry' -configuration Debug -sdk macosx clean build | xcpretty -c
after_success:
- ./script/coveralls.sh
diff --git a/Examples/Masonry iOS Examples.xcodeproj/project.pbxproj b/Examples/Masonry iOS Examples.xcodeproj/project.pbxproj
index 8ea63a4f..22630977 100644
--- a/Examples/Masonry iOS Examples.xcodeproj/project.pbxproj
+++ b/Examples/Masonry iOS Examples.xcodeproj/project.pbxproj
@@ -229,8 +229,6 @@
DD52F223179CAD57005CD195 /* Sources */,
DD52F224179CAD57005CD195 /* Frameworks */,
DD52F225179CAD57005CD195 /* Resources */,
- 5C6517785DFF4287BCDF458D /* [CP] Copy Pods Resources */,
- 9A6DE33A61510E8F9549C5EE /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -282,21 +280,6 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
- 5C6517785DFF4287BCDF458D /* [CP] Copy Pods Resources */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- name = "[CP] Copy Pods Resources";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods-Masonry iOS Examples/Pods-Masonry iOS Examples-resources.sh\"\n";
- showEnvVarsInLog = 0;
- };
621F6A1FCAEF44F880874959 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -315,21 +298,6 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
- 9A6DE33A61510E8F9549C5EE /* [CP] Embed Pods Frameworks */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- name = "[CP] Embed Pods Frameworks";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods-Masonry iOS Examples/Pods-Masonry iOS Examples-frameworks.sh\"\n";
- showEnvVarsInLog = 0;
- };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
diff --git a/Examples/Masonry iOS Examples.xcodeproj/xcshareddata/xcschemes/Masonry iOS Examples.xcscheme b/Examples/Masonry iOS Examples.xcodeproj/xcshareddata/xcschemes/Masonry iOS Examples.xcscheme
index 9dd6d243..eb94e410 100644
--- a/Examples/Masonry iOS Examples.xcodeproj/xcshareddata/xcschemes/Masonry iOS Examples.xcscheme
+++ b/Examples/Masonry iOS Examples.xcodeproj/xcshareddata/xcschemes/Masonry iOS Examples.xcscheme
@@ -16,7 +16,7 @@
BuildableIdentifier = "primary"
BlueprintIdentifier = "3AED05B61AD59FD40053CC65"
BuildableName = "Masonry.framework"
- BlueprintName = "Masonry iOS"
+ BlueprintName = "Masonry"
ReferencedContainer = "container:../Masonry.xcodeproj">
@@ -40,10 +40,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
-
-
-
-
+
+
-
-
'jonas.budelmann@gmail.com' }
s.social_media_url = "http://twitter.com/cloudkite"
- s.source = { :git => 'https://github.com/cloudkite/Masonry.git', :tag => "v#{s.version}" }
+ s.source = { :git => 'https://github.com/SnapKit/Masonry.git', :tag => "v#{s.version}" }
s.description = %{
Masonry is a light-weight layout framework which wraps AutoLayout with a nicer syntax.
@@ -26,13 +26,10 @@ Pod::Spec.new do |s|
EOS
s.source_files = 'Masonry/*.{h,m}'
+ s.private_header_files = 'Masonry/MASConstraint+Private.h'
- s.ios.frameworks = 'Foundation', 'UIKit'
- s.tvos.frameworks = 'Foundation', 'UIKit'
- s.osx.frameworks = 'Foundation', 'AppKit'
-
- s.ios.deployment_target = '6.0' # minimum SDK with autolayout
- s.osx.deployment_target = '10.7' # minimum SDK with autolayout
- s.tvos.deployment_target = '9.0' # minimum SDK with autolayout
+ # minimum SDK with autolayout
+ s.platforms = { :ios => "9.0", :osx => "10.11", :tvos => "9.0" }
s.requires_arc = true
+ s.static_framework = true
end
diff --git a/Masonry.xcodeproj/project.pbxproj b/Masonry.xcodeproj/project.pbxproj
index 1d7d2dab..eff0892e 100644
--- a/Masonry.xcodeproj/project.pbxproj
+++ b/Masonry.xcodeproj/project.pbxproj
@@ -7,6 +7,13 @@
objects = {
/* Begin PBXBuildFile section */
+ 1539A4A42665991900892F49 /* LayoutGuide+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1539A4A22665991900892F49 /* LayoutGuide+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 156873F32669345D00656904 /* MASUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 156873F22669345D00656904 /* MASUtilities.m */; };
+ 15CD2E49266661C000E84D15 /* NSArray+MASShorthandAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CD2E48266661C000E84D15 /* NSArray+MASShorthandAdditions.m */; };
+ 15CD2E4B2666620D00E84D15 /* LayoutGuide+MASShorthandAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CD2E4A2666620D00E84D15 /* LayoutGuide+MASShorthandAdditions.m */; };
+ 15CD2E4D2666626100E84D15 /* View+MASShorthandAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 15CD2E4C2666626100E84D15 /* View+MASShorthandAdditions.m */; };
+ 15E414912663780600D3D1B6 /* LayoutGuide+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 15E4148F2663780600D3D1B6 /* LayoutGuide+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 15E414922663780600D3D1B6 /* LayoutGuide+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 15E414902663780600D3D1B6 /* LayoutGuide+MASAdditions.m */; };
3AED05BD1AD59FD40053CC65 /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05BC1AD59FD40053CC65 /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; };
3AED05F21AD5A0470053CC65 /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05DC1AD5A0470053CC65 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; };
3AED05F31AD5A0470053CC65 /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AED05DD1AD5A0470053CC65 /* MASCompositeConstraint.m */; };
@@ -30,36 +37,18 @@
3AED06051AD5A0470053CC65 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05EF1AD5A0470053CC65 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
3AED06061AD5A0470053CC65 /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AED05F01AD5A0470053CC65 /* View+MASAdditions.m */; };
3AED06071AD5A0470053CC65 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05F11AD5A0470053CC65 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3AED060A1AD5A1400053CC65 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AED05EB1AD5A0470053CC65 /* NSArray+MASAdditions.m */; };
- 3AED060B1AD5A1400053CC65 /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AED05E71AD5A0470053CC65 /* MASViewAttribute.m */; };
- 3AED060C1AD5A1400053CC65 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AED05E41AD5A0470053CC65 /* MASLayoutConstraint.m */; };
- 3AED060D1AD5A1400053CC65 /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AED05DF1AD5A0470053CC65 /* MASConstraint.m */; };
- 3AED060E1AD5A1400053CC65 /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AED05E91AD5A0470053CC65 /* MASViewConstraint.m */; };
- 3AED060F1AD5A1400053CC65 /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AED05DD1AD5A0470053CC65 /* MASCompositeConstraint.m */; };
- 3AED06101AD5A1400053CC65 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AED05E21AD5A0470053CC65 /* MASConstraintMaker.m */; };
- 3AED06111AD5A1400053CC65 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AED05EE1AD5A0470053CC65 /* NSLayoutConstraint+MASDebugAdditions.m */; };
- 3AED06121AD5A1400053CC65 /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AED05F01AD5A0470053CC65 /* View+MASAdditions.m */; };
- 3AED06151AD5A1400053CC65 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05EF1AD5A0470053CC65 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3AED06161AD5A1400053CC65 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05F11AD5A0470053CC65 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3AED06171AD5A1400053CC65 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05E61AD5A0470053CC65 /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3AED06181AD5A1400053CC65 /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05BC1AD59FD40053CC65 /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3AED06191AD5A1400053CC65 /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05E31AD5A0470053CC65 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3AED061A1AD5A1400053CC65 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05E81AD5A0470053CC65 /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3AED061B1AD5A1400053CC65 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05EC1AD5A0470053CC65 /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3AED061C1AD5A1400053CC65 /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05E11AD5A0470053CC65 /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3AED061D1AD5A1400053CC65 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05E01AD5A0470053CC65 /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 3AED061E1AD5A1400053CC65 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05E51AD5A0470053CC65 /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3AED061F1AD5A1400053CC65 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05EA1AD5A0470053CC65 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3AED06201AD5A1400053CC65 /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05DC1AD5A0470053CC65 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3AED06211AD5A1400053CC65 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05ED1AD5A0470053CC65 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3AED06221AD5A1400053CC65 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AED05DE1AD5A0470053CC65 /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; };
4473548D1B39F772004DACCB /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4473548B1B39F772004DACCB /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
4473548E1B39F772004DACCB /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4473548C1B39F772004DACCB /* ViewController+MASAdditions.m */; };
- 447354921B3A18B3004DACCB /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4473548C1B39F772004DACCB /* ViewController+MASAdditions.m */; };
- 447354931B3A18B9004DACCB /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4473548B1B39F772004DACCB /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
+ 1539A4A22665991900892F49 /* LayoutGuide+MASShorthandAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LayoutGuide+MASShorthandAdditions.h"; sourceTree = ""; };
+ 156873F22669345D00656904 /* MASUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MASUtilities.m; sourceTree = ""; };
+ 15CD2E48266661C000E84D15 /* NSArray+MASShorthandAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+MASShorthandAdditions.m"; sourceTree = ""; };
+ 15CD2E4A2666620D00E84D15 /* LayoutGuide+MASShorthandAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "LayoutGuide+MASShorthandAdditions.m"; sourceTree = ""; };
+ 15CD2E4C2666626100E84D15 /* View+MASShorthandAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "View+MASShorthandAdditions.m"; sourceTree = ""; };
+ 15E4148F2663780600D3D1B6 /* LayoutGuide+MASAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LayoutGuide+MASAdditions.h"; sourceTree = ""; };
+ 15E414902663780600D3D1B6 /* LayoutGuide+MASAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "LayoutGuide+MASAdditions.m"; sourceTree = ""; };
3AED05B71AD59FD40053CC65 /* Masonry.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Masonry.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3AED05BB1AD59FD40053CC65 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
3AED05BC1AD59FD40053CC65 /* Masonry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Masonry.h; sourceTree = ""; };
@@ -85,7 +74,6 @@
3AED05EF1AD5A0470053CC65 /* View+MASAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "View+MASAdditions.h"; sourceTree = ""; };
3AED05F01AD5A0470053CC65 /* View+MASAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "View+MASAdditions.m"; sourceTree = ""; };
3AED05F11AD5A0470053CC65 /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "View+MASShorthandAdditions.h"; sourceTree = ""; };
- 3AED06271AD5A1400053CC65 /* Masonry.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Masonry.framework; sourceTree = BUILT_PRODUCTS_DIR; };
4473548B1B39F772004DACCB /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ViewController+MASAdditions.h"; sourceTree = ""; };
4473548C1B39F772004DACCB /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ViewController+MASAdditions.m"; sourceTree = ""; };
/* End PBXFileReference section */
@@ -98,13 +86,6 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- 3AED06131AD5A1400053CC65 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
@@ -120,7 +101,6 @@
isa = PBXGroup;
children = (
3AED05B71AD59FD40053CC65 /* Masonry.framework */,
- 3AED06271AD5A1400053CC65 /* Masonry.framework */,
);
name = Products;
sourceTree = "";
@@ -130,14 +110,21 @@
children = (
3AED05BC1AD59FD40053CC65 /* Masonry.h */,
3AED05E51AD5A0470053CC65 /* MASUtilities.h */,
+ 156873F22669345D00656904 /* MASUtilities.m */,
3AED05EF1AD5A0470053CC65 /* View+MASAdditions.h */,
3AED05F01AD5A0470053CC65 /* View+MASAdditions.m */,
3AED05F11AD5A0470053CC65 /* View+MASShorthandAdditions.h */,
+ 15CD2E4C2666626100E84D15 /* View+MASShorthandAdditions.m */,
4473548B1B39F772004DACCB /* ViewController+MASAdditions.h */,
4473548C1B39F772004DACCB /* ViewController+MASAdditions.m */,
+ 15E4148F2663780600D3D1B6 /* LayoutGuide+MASAdditions.h */,
+ 15E414902663780600D3D1B6 /* LayoutGuide+MASAdditions.m */,
+ 1539A4A22665991900892F49 /* LayoutGuide+MASShorthandAdditions.h */,
+ 15CD2E4A2666620D00E84D15 /* LayoutGuide+MASShorthandAdditions.m */,
3AED05EA1AD5A0470053CC65 /* NSArray+MASAdditions.h */,
3AED05EB1AD5A0470053CC65 /* NSArray+MASAdditions.m */,
3AED05EC1AD5A0470053CC65 /* NSArray+MASShorthandAdditions.h */,
+ 15CD2E48266661C000E84D15 /* NSArray+MASShorthandAdditions.m */,
3AED05DE1AD5A0470053CC65 /* MASConstraint.h */,
3AED05E01AD5A0470053CC65 /* MASConstraint+Private.h */,
3AED05DF1AD5A0470053CC65 /* MASConstraint.m */,
@@ -176,6 +163,8 @@
3AED06051AD5A0470053CC65 /* View+MASAdditions.h in Headers */,
3AED06071AD5A0470053CC65 /* View+MASShorthandAdditions.h in Headers */,
4473548D1B39F772004DACCB /* ViewController+MASAdditions.h in Headers */,
+ 15E414912663780600D3D1B6 /* LayoutGuide+MASAdditions.h in Headers */,
+ 1539A4A42665991900892F49 /* LayoutGuide+MASShorthandAdditions.h in Headers */,
3AED05FC1AD5A0470053CC65 /* MASViewAttribute.h in Headers */,
3AED05BD1AD59FD40053CC65 /* Masonry.h in Headers */,
3AED05F91AD5A0470053CC65 /* MASLayoutConstraint.h in Headers */,
@@ -191,34 +180,12 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- 3AED06141AD5A1400053CC65 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 3AED06151AD5A1400053CC65 /* View+MASAdditions.h in Headers */,
- 3AED06161AD5A1400053CC65 /* View+MASShorthandAdditions.h in Headers */,
- 3AED06171AD5A1400053CC65 /* MASViewAttribute.h in Headers */,
- 3AED06181AD5A1400053CC65 /* Masonry.h in Headers */,
- 3AED06191AD5A1400053CC65 /* MASLayoutConstraint.h in Headers */,
- 3AED061A1AD5A1400053CC65 /* MASViewConstraint.h in Headers */,
- 3AED061B1AD5A1400053CC65 /* NSArray+MASShorthandAdditions.h in Headers */,
- 3AED061C1AD5A1400053CC65 /* MASConstraintMaker.h in Headers */,
- 3AED061E1AD5A1400053CC65 /* MASUtilities.h in Headers */,
- 3AED061F1AD5A1400053CC65 /* NSArray+MASAdditions.h in Headers */,
- 3AED06201AD5A1400053CC65 /* MASCompositeConstraint.h in Headers */,
- 447354931B3A18B9004DACCB /* ViewController+MASAdditions.h in Headers */,
- 3AED06221AD5A1400053CC65 /* MASConstraint.h in Headers */,
- 3AED061D1AD5A1400053CC65 /* MASConstraint+Private.h in Headers */,
- 3AED06211AD5A1400053CC65 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
- 3AED05B61AD59FD40053CC65 /* Masonry iOS */ = {
+ 3AED05B61AD59FD40053CC65 /* Masonry */ = {
isa = PBXNativeTarget;
- buildConfigurationList = 3AED05CD1AD59FD40053CC65 /* Build configuration list for PBXNativeTarget "Masonry iOS" */;
+ buildConfigurationList = 3AED05CD1AD59FD40053CC65 /* Build configuration list for PBXNativeTarget "Masonry" */;
buildPhases = (
3AED05B21AD59FD40053CC65 /* Sources */,
3AED05B31AD59FD40053CC65 /* Frameworks */,
@@ -229,36 +196,18 @@
);
dependencies = (
);
- name = "Masonry iOS";
+ name = Masonry;
productName = Masonry;
productReference = 3AED05B71AD59FD40053CC65 /* Masonry.framework */;
productType = "com.apple.product-type.framework";
};
- 3AED06081AD5A1400053CC65 /* Masonry OSX */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 3AED06241AD5A1400053CC65 /* Build configuration list for PBXNativeTarget "Masonry OSX" */;
- buildPhases = (
- 3AED06091AD5A1400053CC65 /* Sources */,
- 3AED06131AD5A1400053CC65 /* Frameworks */,
- 3AED06141AD5A1400053CC65 /* Headers */,
- 3AED06231AD5A1400053CC65 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "Masonry OSX";
- productName = Masonry;
- productReference = 3AED06271AD5A1400053CC65 /* Masonry.framework */;
- productType = "com.apple.product-type.framework";
- };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
3AED05AE1AD59FD40053CC65 /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0900;
+ LastUpgradeCheck = 1250;
ORGANIZATIONNAME = "Jonas Budelmann";
TargetAttributes = {
3AED05B61AD59FD40053CC65 = {
@@ -271,6 +220,7 @@
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
+ English,
en,
);
mainGroup = 3AED05AD1AD59FD40053CC65;
@@ -278,8 +228,7 @@
projectDirPath = "";
projectRoot = "";
targets = (
- 3AED05B61AD59FD40053CC65 /* Masonry iOS */,
- 3AED06081AD5A1400053CC65 /* Masonry OSX */,
+ 3AED05B61AD59FD40053CC65 /* Masonry */,
);
};
/* End PBXProject section */
@@ -292,13 +241,6 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
- 3AED06231AD5A1400053CC65 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -308,31 +250,19 @@
files = (
3AED06011AD5A0470053CC65 /* NSArray+MASAdditions.m in Sources */,
3AED05FD1AD5A0470053CC65 /* MASViewAttribute.m in Sources */,
+ 15CD2E4D2666626100E84D15 /* View+MASShorthandAdditions.m in Sources */,
4473548E1B39F772004DACCB /* ViewController+MASAdditions.m in Sources */,
+ 15E414922663780600D3D1B6 /* LayoutGuide+MASAdditions.m in Sources */,
+ 15CD2E49266661C000E84D15 /* NSArray+MASShorthandAdditions.m in Sources */,
3AED05FA1AD5A0470053CC65 /* MASLayoutConstraint.m in Sources */,
3AED05F51AD5A0470053CC65 /* MASConstraint.m in Sources */,
+ 15CD2E4B2666620D00E84D15 /* LayoutGuide+MASShorthandAdditions.m in Sources */,
3AED05FF1AD5A0470053CC65 /* MASViewConstraint.m in Sources */,
3AED05F31AD5A0470053CC65 /* MASCompositeConstraint.m in Sources */,
3AED05F81AD5A0470053CC65 /* MASConstraintMaker.m in Sources */,
3AED06041AD5A0470053CC65 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */,
3AED06061AD5A0470053CC65 /* View+MASAdditions.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 3AED06091AD5A1400053CC65 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 3AED060A1AD5A1400053CC65 /* NSArray+MASAdditions.m in Sources */,
- 3AED060B1AD5A1400053CC65 /* MASViewAttribute.m in Sources */,
- 3AED060C1AD5A1400053CC65 /* MASLayoutConstraint.m in Sources */,
- 3AED060D1AD5A1400053CC65 /* MASConstraint.m in Sources */,
- 3AED060E1AD5A1400053CC65 /* MASViewConstraint.m in Sources */,
- 3AED060F1AD5A1400053CC65 /* MASCompositeConstraint.m in Sources */,
- 447354921B3A18B3004DACCB /* ViewController+MASAdditions.m in Sources */,
- 3AED06101AD5A1400053CC65 /* MASConstraintMaker.m in Sources */,
- 3AED06111AD5A1400053CC65 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */,
- 3AED06121AD5A1400053CC65 /* View+MASAdditions.m in Sources */,
+ 156873F32669345D00656904 /* MASUtilities.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -352,14 +282,17 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -386,12 +319,15 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.9;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
TARGETED_DEVICE_FAMILY = "1,2";
+ TVOS_DEPLOYMENT_TARGET = 9.0;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
+ WATCHOS_DEPLOYMENT_TARGET = 2.0;
};
name = Debug;
};
@@ -408,14 +344,17 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -435,12 +374,15 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.9;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = NO;
TARGETED_DEVICE_FAMILY = "1,2";
+ TVOS_DEPLOYMENT_TARGET = 9.0;
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
+ WATCHOS_DEPLOYMENT_TARGET = 2.0;
};
name = Release;
};
@@ -455,10 +397,12 @@
INFOPLIST_FILE = Masonry/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MACH_O_TYPE = staticlib;
PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = Masonry;
- SDKROOT = iphoneos;
SKIP_INSTALL = YES;
+ SUPPORTED_PLATFORMS = "macosx iphoneos iphonesimulator appletvos appletvsimulator";
+ TARGETED_DEVICE_FAMILY = "1,2,3,6";
};
name = Debug;
};
@@ -473,46 +417,12 @@
INFOPLIST_FILE = Masonry/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ MACH_O_TYPE = staticlib;
PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = Masonry;
- SDKROOT = iphoneos;
- SKIP_INSTALL = YES;
- };
- name = Release;
- };
- 3AED06251AD5A1400053CC65 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- INFOPLIST_FILE = Masonry/Info.plist;
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.$(PRODUCT_NAME:rfc1034identifier)";
- PRODUCT_NAME = Masonry;
- SDKROOT = macosx;
- SKIP_INSTALL = YES;
- };
- name = Debug;
- };
- 3AED06261AD5A1400053CC65 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- INFOPLIST_FILE = Masonry/Info.plist;
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_BUNDLE_IDENTIFIER = "com.cloudling.$(PRODUCT_NAME:rfc1034identifier)";
- PRODUCT_NAME = Masonry;
- SDKROOT = macosx;
SKIP_INSTALL = YES;
+ SUPPORTED_PLATFORMS = "macosx iphoneos iphonesimulator appletvos appletvsimulator";
+ TARGETED_DEVICE_FAMILY = "1,2,3,6";
};
name = Release;
};
@@ -528,7 +438,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 3AED05CD1AD59FD40053CC65 /* Build configuration list for PBXNativeTarget "Masonry iOS" */ = {
+ 3AED05CD1AD59FD40053CC65 /* Build configuration list for PBXNativeTarget "Masonry" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3AED05CE1AD59FD40053CC65 /* Debug */,
@@ -537,15 +447,6 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
- 3AED06241AD5A1400053CC65 /* Build configuration list for PBXNativeTarget "Masonry OSX" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 3AED06251AD5A1400053CC65 /* Debug */,
- 3AED06261AD5A1400053CC65 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
/* End XCConfigurationList section */
};
rootObject = 3AED05AE1AD59FD40053CC65 /* Project object */;
diff --git a/Masonry.xcodeproj/xcshareddata/xcschemes/Masonry OSX.xcscheme b/Masonry.xcodeproj/xcshareddata/xcschemes/Masonry OSX.xcscheme
deleted file mode 100644
index 17d12e9b..00000000
--- a/Masonry.xcodeproj/xcshareddata/xcschemes/Masonry OSX.xcscheme
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Masonry.xcodeproj/xcshareddata/xcschemes/Masonry iOS.xcscheme b/Masonry.xcodeproj/xcshareddata/xcschemes/Masonry.xcscheme
similarity index 78%
rename from Masonry.xcodeproj/xcshareddata/xcschemes/Masonry iOS.xcscheme
rename to Masonry.xcodeproj/xcshareddata/xcschemes/Masonry.xcscheme
index 61c34a76..124167eb 100644
--- a/Masonry.xcodeproj/xcshareddata/xcschemes/Masonry iOS.xcscheme
+++ b/Masonry.xcodeproj/xcshareddata/xcschemes/Masonry.xcscheme
@@ -1,6 +1,6 @@
@@ -26,35 +26,20 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
- language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
-
-
-
-
-
-
-
-
diff --git a/Masonry/LayoutGuide+MASAdditions.h b/Masonry/LayoutGuide+MASAdditions.h
new file mode 100644
index 00000000..3adcd9e6
--- /dev/null
+++ b/Masonry/LayoutGuide+MASAdditions.h
@@ -0,0 +1,65 @@
+//
+// LayoutGuide+MASAdditions.h
+// Masonry
+//
+// Created by v on 2021/5/30.
+// Copyright © 2021 Jonas Budelmann. All rights reserved.
+//
+
+#import "MASUtilities.h"
+#import "MASConstraintMaker.h"
+#import "MASViewAttribute.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+API_AVAILABLE(macos(10.11), ios(9.0))
+@interface MASLayoutGuide (MASAdditions)
+
+@property (nonatomic, readonly) MASViewAttribute *mas_left;
+@property (nonatomic, readonly) MASViewAttribute *mas_top;
+@property (nonatomic, readonly) MASViewAttribute *mas_right;
+@property (nonatomic, readonly) MASViewAttribute *mas_bottom;
+@property (nonatomic, readonly) MASViewAttribute *mas_leading;
+@property (nonatomic, readonly) MASViewAttribute *mas_trailing;
+@property (nonatomic, readonly) MASViewAttribute *mas_width;
+@property (nonatomic, readonly) MASViewAttribute *mas_height;
+@property (nonatomic, readonly) MASViewAttribute *mas_centerX;
+@property (nonatomic, readonly) MASViewAttribute *mas_centerY;
+
+@property (nonatomic, copy, readonly) MASViewAttribute * (^mas_attribute)(NSLayoutAttribute attr);
+
+/**
+ * Creates a MASConstraintMaker with the callee view.
+ * Any constraints defined are added to the view or the appropriate superview once the block has finished executing
+ *
+ * @param block scope within which you can build up the constraints which you wish to apply to the view.
+ *
+ * @return Array of created MASConstraints
+ */
+- (NSArray *)mas_makeConstraints:(void (NS_NOESCAPE^)(id make))block;
+
+/**
+ * Creates a MASConstraintMaker with the callee view.
+ * Any constraints defined are added to the view or the appropriate superview once the block has finished executing.
+ * If an existing constraint exists then it will be updated instead.
+ *
+ * @param block scope within which you can build up the constraints which you wish to apply to the view.
+ *
+ * @return Array of created/updated MASConstraints
+ */
+- (NSArray *)mas_updateConstraints:(void (NS_NOESCAPE^)(id make))block;
+
+/**
+ * Creates a MASConstraintMaker with the callee view.
+ * Any constraints defined are added to the view or the appropriate superview once the block has finished executing.
+ * All constraints previously installed for the view will be removed.
+ *
+ * @param block scope within which you can build up the constraints which you wish to apply to the view.
+ *
+ * @return Array of created/updated MASConstraints
+ */
+- (NSArray *)mas_remakeConstraints:(void (NS_NOESCAPE^)(id make))block;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Masonry/LayoutGuide+MASAdditions.m b/Masonry/LayoutGuide+MASAdditions.m
new file mode 100644
index 00000000..9ad5f537
--- /dev/null
+++ b/Masonry/LayoutGuide+MASAdditions.m
@@ -0,0 +1,83 @@
+//
+// LayoutGuide+MASAdditions.m
+// Masonry
+//
+// Created by v on 2021/5/30.
+// Copyright © 2021 Jonas Budelmann. All rights reserved.
+//
+
+#import "LayoutGuide+MASAdditions.h"
+#import
+
+
+@implementation MASLayoutGuide (MASAdditions)
+
+- (NSArray *)mas_makeConstraints:(void (NS_NOESCAPE^)(id make))block {
+ MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithLayoutGuide:self];
+ block(constraintMaker);
+ return [constraintMaker install];
+}
+
+- (NSArray *)mas_updateConstraints:(void (NS_NOESCAPE^)(id make))block {
+ MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithLayoutGuide:self];
+ constraintMaker.updateExisting = YES;
+ block(constraintMaker);
+ return [constraintMaker install];
+}
+
+- (NSArray *)mas_remakeConstraints:(void (NS_NOESCAPE^)(id make))block {
+ MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithLayoutGuide:self];
+ constraintMaker.removeExisting = YES;
+ block(constraintMaker);
+ return [constraintMaker install];
+}
+
+#pragma mark - NSLayoutAttribute properties
+
+- (MASViewAttribute *)mas_left {
+ return [[MASViewAttribute alloc] initWithView:self.owningView item:self layoutAttribute:NSLayoutAttributeLeft];
+}
+
+- (MASViewAttribute *)mas_top {
+ return [[MASViewAttribute alloc] initWithView:self.owningView item:self layoutAttribute:NSLayoutAttributeTop];
+}
+
+- (MASViewAttribute *)mas_right {
+ return [[MASViewAttribute alloc] initWithView:self.owningView item:self layoutAttribute:NSLayoutAttributeRight];
+}
+
+- (MASViewAttribute *)mas_bottom {
+ return [[MASViewAttribute alloc] initWithView:self.owningView item:self layoutAttribute:NSLayoutAttributeBottom];
+}
+
+- (MASViewAttribute *)mas_leading {
+ return [[MASViewAttribute alloc] initWithView:self.owningView item:self layoutAttribute:NSLayoutAttributeLeading];
+}
+
+- (MASViewAttribute *)mas_trailing {
+ return [[MASViewAttribute alloc] initWithView:self.owningView item:self layoutAttribute:NSLayoutAttributeTrailing];
+}
+
+- (MASViewAttribute *)mas_width {
+ return [[MASViewAttribute alloc] initWithView:self.owningView item:self layoutAttribute:NSLayoutAttributeWidth];
+}
+
+- (MASViewAttribute *)mas_height {
+ return [[MASViewAttribute alloc] initWithView:self.owningView item:self layoutAttribute:NSLayoutAttributeHeight];
+}
+
+- (MASViewAttribute *)mas_centerX {
+ return [[MASViewAttribute alloc] initWithView:self.owningView item:self layoutAttribute:NSLayoutAttributeCenterX];
+}
+
+- (MASViewAttribute *)mas_centerY {
+ return [[MASViewAttribute alloc] initWithView:self.owningView item:self layoutAttribute:NSLayoutAttributeCenterY];
+}
+
+- (MASViewAttribute * (^)(NSLayoutAttribute))mas_attribute {
+ return ^(NSLayoutAttribute attr) {
+ return [[MASViewAttribute alloc] initWithView:self.owningView item:self layoutAttribute:attr];
+ };
+}
+
+@end
diff --git a/Masonry/LayoutGuide+MASShorthandAdditions.h b/Masonry/LayoutGuide+MASShorthandAdditions.h
new file mode 100644
index 00000000..1ce1fdf2
--- /dev/null
+++ b/Masonry/LayoutGuide+MASShorthandAdditions.h
@@ -0,0 +1,43 @@
+//
+// LayoutGuide+MASShorthandAdditions.h
+// Masonry
+//
+// Created by v on 2021/6/1.
+// Copyright © 2021 Jonas Budelmann. All rights reserved.
+//
+
+#import "LayoutGuide+MASAdditions.h"
+
+#ifdef MAS_SHORTHAND
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Shorthand view additions without the 'mas_' prefixes,
+ * only enabled if MAS_SHORTHAND is defined
+ */
+API_AVAILABLE(macos(10.11), ios(9.0))
+@interface MASLayoutGuide (MASShorthandAdditions)
+
+@property (nonatomic, readonly) MASViewAttribute *left;
+@property (nonatomic, readonly) MASViewAttribute *top;
+@property (nonatomic, readonly) MASViewAttribute *right;
+@property (nonatomic, readonly) MASViewAttribute *bottom;
+@property (nonatomic, readonly) MASViewAttribute *leading;
+@property (nonatomic, readonly) MASViewAttribute *trailing;
+@property (nonatomic, readonly) MASViewAttribute *width;
+@property (nonatomic, readonly) MASViewAttribute *height;
+@property (nonatomic, readonly) MASViewAttribute *centerX;
+@property (nonatomic, readonly) MASViewAttribute *centerY;
+
+@property (nonatomic, copy, readonly) MASViewAttribute * (^attribute)(NSLayoutAttribute attr);
+
+- (NSArray *)makeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
+- (NSArray *)updateConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
+- (NSArray *)remakeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif
diff --git a/Masonry/LayoutGuide+MASShorthandAdditions.m b/Masonry/LayoutGuide+MASShorthandAdditions.m
new file mode 100644
index 00000000..b0fa3bd5
--- /dev/null
+++ b/Masonry/LayoutGuide+MASShorthandAdditions.m
@@ -0,0 +1,40 @@
+//
+// LayoutGuide+MASShorthandAdditions.m
+// Masonry
+//
+// Created by v on 2021/6/1.
+// Copyright © 2021 Jonas Budelmann. All rights reserved.
+//
+
+#import "LayoutGuide+MASShorthandAdditions.h"
+
+@implementation MASLayoutGuide (MASShorthandAdditions)
+
+MAS_ATTR_FORWARD(top);
+MAS_ATTR_FORWARD(left);
+MAS_ATTR_FORWARD(bottom);
+MAS_ATTR_FORWARD(right);
+MAS_ATTR_FORWARD(leading);
+MAS_ATTR_FORWARD(trailing);
+MAS_ATTR_FORWARD(width);
+MAS_ATTR_FORWARD(height);
+MAS_ATTR_FORWARD(centerX);
+MAS_ATTR_FORWARD(centerY);
+
+- (MASViewAttribute * (^)(NSLayoutAttribute))attribute {
+ return [self mas_attribute];
+}
+
+- (NSArray *)makeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *))block {
+ return [self mas_makeConstraints:block];
+}
+
+- (NSArray *)updateConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *))block {
+ return [self mas_updateConstraints:block];
+}
+
+- (NSArray *)remakeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *))block {
+ return [self mas_remakeConstraints:block];
+}
+
+@end
diff --git a/Masonry/MASCompositeConstraint.h b/Masonry/MASCompositeConstraint.h
index 934c6f16..04a045b3 100644
--- a/Masonry/MASCompositeConstraint.h
+++ b/Masonry/MASCompositeConstraint.h
@@ -9,6 +9,8 @@
#import "MASConstraint.h"
#import "MASUtilities.h"
+NS_ASSUME_NONNULL_BEGIN
+
/**
* A group of MASConstraint objects
*/
@@ -21,6 +23,11 @@
*
* @return a composite constraint
*/
-- (id)initWithChildren:(NSArray *)children;
+- (instancetype)initWithChildren:(NSArray *)children NS_DESIGNATED_INITIALIZER;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Masonry/MASCompositeConstraint.m b/Masonry/MASCompositeConstraint.m
index 2002a405..b4ddbf16 100644
--- a/Masonry/MASCompositeConstraint.m
+++ b/Masonry/MASCompositeConstraint.m
@@ -11,20 +11,19 @@
@interface MASCompositeConstraint ()
-@property (nonatomic, strong) id mas_key;
-@property (nonatomic, strong) NSMutableArray *childConstraints;
+@property (nonatomic) id mas_key;
+@property (nonatomic) NSMutableArray *childConstraints;
@end
@implementation MASCompositeConstraint
-- (id)initWithChildren:(NSArray *)children {
- self = [super init];
- if (!self) return nil;
-
- _childConstraints = [children mutableCopy];
- for (MASConstraint *constraint in _childConstraints) {
- constraint.delegate = self;
+- (instancetype)initWithChildren:(NSArray *)children {
+ if (self = [super init]) {
+ _childConstraints = [children mutableCopy];
+ for (MASConstraint *constraint in _childConstraints) {
+ constraint.delegate = self;
+ }
}
return self;
diff --git a/Masonry/MASConstraint+Private.h b/Masonry/MASConstraint+Private.h
index ee0fd960..15333987 100644
--- a/Masonry/MASConstraint+Private.h
+++ b/Masonry/MASConstraint+Private.h
@@ -8,20 +8,14 @@
#import "MASConstraint.h"
-@protocol MASConstraintDelegate;
-
+NS_ASSUME_NONNULL_BEGIN
@interface MASConstraint ()
/**
* Whether or not to check for an existing constraint instead of adding constraint
*/
-@property (nonatomic, assign) BOOL updateExisting;
-
-/**
- * Usually MASConstraintMaker but could be a parent MASConstraint
- */
-@property (nonatomic, weak) id delegate;
+@property (nonatomic) BOOL updateExisting;
/**
* Based on a provided value type, is equal to calling:
@@ -43,7 +37,7 @@
* MASViewAttribute, UIView, NSValue, NSArray
* see readme for more details.
*/
-- (MASConstraint * (^)(id, NSLayoutRelation))equalToWithRelation;
+@property (nonatomic, copy, readonly) MASConstraint * (^equalToWithRelation)(id, NSLayoutRelation);
/**
* Override to set a custom chaining behaviour
@@ -52,15 +46,4 @@
@end
-
-@protocol MASConstraintDelegate
-
-/**
- * Notifies the delegate when the constraint needs to be replaced with another constraint. For example
- * A MASViewConstraint may turn into a MASCompositeConstraint when an array is passed to one of the equality blocks
- */
-- (void)constraint:(MASConstraint *)constraint shouldBeReplacedWithConstraint:(MASConstraint *)replacementConstraint;
-
-- (MASConstraint *)constraint:(MASConstraint *)constraint addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute;
-
-@end
+NS_ASSUME_NONNULL_END
diff --git a/Masonry/MASConstraint.h b/Masonry/MASConstraint.h
index 6fea79ee..9cc10f36 100644
--- a/Masonry/MASConstraint.h
+++ b/Masonry/MASConstraint.h
@@ -8,6 +8,10 @@
#import "MASUtilities.h"
+@protocol MASConstraintDelegate;
+
+NS_ASSUME_NONNULL_BEGIN
+
/**
* Enables Constraints to be created with chainable syntax
* Constraint can represent single NSLayoutConstraint (MASViewConstraint)
@@ -22,68 +26,68 @@
* only affects MASConstraints in which the first item's NSLayoutAttribute is one of the following
* NSLayoutAttributeTop, NSLayoutAttributeLeft, NSLayoutAttributeBottom, NSLayoutAttributeRight
*/
-- (MASConstraint * (^)(MASEdgeInsets insets))insets;
+@property (nonatomic, copy, readonly) MASConstraint * (^insets)(MASEdgeInsets insets);
/**
* Modifies the NSLayoutConstraint constant,
* only affects MASConstraints in which the first item's NSLayoutAttribute is one of the following
* NSLayoutAttributeTop, NSLayoutAttributeLeft, NSLayoutAttributeBottom, NSLayoutAttributeRight
*/
-- (MASConstraint * (^)(CGFloat inset))inset;
+@property (nonatomic, copy, readonly) MASConstraint * (^inset)(CGFloat inset);
/**
* Modifies the NSLayoutConstraint constant,
* only affects MASConstraints in which the first item's NSLayoutAttribute is one of the following
* NSLayoutAttributeWidth, NSLayoutAttributeHeight
*/
-- (MASConstraint * (^)(CGSize offset))sizeOffset;
+@property (nonatomic, copy, readonly) MASConstraint * (^sizeOffset)(CGSize offset);
/**
* Modifies the NSLayoutConstraint constant,
* only affects MASConstraints in which the first item's NSLayoutAttribute is one of the following
* NSLayoutAttributeCenterX, NSLayoutAttributeCenterY
*/
-- (MASConstraint * (^)(CGPoint offset))centerOffset;
+@property (nonatomic, copy, readonly) MASConstraint * (^centerOffset)(CGPoint offset);
/**
* Modifies the NSLayoutConstraint constant
*/
-- (MASConstraint * (^)(CGFloat offset))offset;
+@property (nonatomic, copy, readonly) MASConstraint * (^offset)(CGFloat offset);
/**
* Modifies the NSLayoutConstraint constant based on a value type
*/
-- (MASConstraint * (^)(NSValue *value))valueOffset;
+@property (nonatomic, copy, readonly) MASConstraint * (^valueOffset)(NSValue *value);
/**
* Sets the NSLayoutConstraint multiplier property
*/
-- (MASConstraint * (^)(CGFloat multiplier))multipliedBy;
+@property (nonatomic, copy, readonly) MASConstraint * (^multipliedBy)(CGFloat multiplier);
/**
* Sets the NSLayoutConstraint multiplier to 1.0/dividedBy
*/
-- (MASConstraint * (^)(CGFloat divider))dividedBy;
+@property (nonatomic, copy, readonly) MASConstraint * (^dividedBy)(CGFloat divider);
/**
* Sets the NSLayoutConstraint priority to a float or MASLayoutPriority
*/
-- (MASConstraint * (^)(MASLayoutPriority priority))priority;
+@property (nonatomic, copy, readonly) MASConstraint * (^priority)(MASLayoutPriority priority);
/**
* Sets the NSLayoutConstraint priority to MASLayoutPriorityLow
*/
-- (MASConstraint * (^)(void))priorityLow;
+@property (nonatomic, copy, readonly) MASConstraint * (^priorityLow)(void);
/**
* Sets the NSLayoutConstraint priority to MASLayoutPriorityMedium
*/
-- (MASConstraint * (^)(void))priorityMedium;
+@property (nonatomic, copy, readonly) MASConstraint * (^priorityMedium)(void);
/**
* Sets the NSLayoutConstraint priority to MASLayoutPriorityHigh
*/
-- (MASConstraint * (^)(void))priorityHigh;
+@property (nonatomic, copy, readonly) MASConstraint * (^priorityHigh)(void);
/**
* Sets the constraint relation to NSLayoutRelationEqual
@@ -91,7 +95,7 @@
* MASViewAttribute, UIView, NSValue, NSArray
* see readme for more details.
*/
-- (MASConstraint * (^)(id attr))equalTo;
+@property (nonatomic, copy, readonly) MASConstraint * (^equalTo)(id attr);
/**
* Sets the constraint relation to NSLayoutRelationGreaterThanOrEqual
@@ -99,7 +103,7 @@
* MASViewAttribute, UIView, NSValue, NSArray
* see readme for more details.
*/
-- (MASConstraint * (^)(id attr))greaterThanOrEqualTo;
+@property (nonatomic, copy, readonly) MASConstraint * (^greaterThanOrEqualTo)(id attr);
/**
* Sets the constraint relation to NSLayoutRelationLessThanOrEqual
@@ -107,46 +111,51 @@
* MASViewAttribute, UIView, NSValue, NSArray
* see readme for more details.
*/
-- (MASConstraint * (^)(id attr))lessThanOrEqualTo;
+@property (nonatomic, copy, readonly) MASConstraint * (^lessThanOrEqualTo)(id attr);
/**
* Optional semantic property which has no effect but improves the readability of constraint
*/
-- (MASConstraint *)with;
+@property (nonatomic, readonly) MASConstraint *with;
+#ifndef __cplusplus
+#ifndef and
/**
* Optional semantic property which has no effect but improves the readability of constraint
+ * `and` is defined in in C or as an operator was built into C++
*/
-- (MASConstraint *)and;
+@property (nonatomic, readonly) MASConstraint *and;
+#endif
+#endif
/**
* Creates a new MASCompositeConstraint with the called attribute and reciever
*/
-- (MASConstraint *)left;
-- (MASConstraint *)top;
-- (MASConstraint *)right;
-- (MASConstraint *)bottom;
-- (MASConstraint *)leading;
-- (MASConstraint *)trailing;
-- (MASConstraint *)width;
-- (MASConstraint *)height;
-- (MASConstraint *)centerX;
-- (MASConstraint *)centerY;
-- (MASConstraint *)baseline;
-
-- (MASConstraint *)firstBaseline;
-- (MASConstraint *)lastBaseline;
+@property (nonatomic, readonly) MASConstraint *left;
+@property (nonatomic, readonly) MASConstraint *top;
+@property (nonatomic, readonly) MASConstraint *right;
+@property (nonatomic, readonly) MASConstraint *bottom;
+@property (nonatomic, readonly) MASConstraint *leading;
+@property (nonatomic, readonly) MASConstraint *trailing;
+@property (nonatomic, readonly) MASConstraint *width;
+@property (nonatomic, readonly) MASConstraint *height;
+@property (nonatomic, readonly) MASConstraint *centerX;
+@property (nonatomic, readonly) MASConstraint *centerY;
+@property (nonatomic, readonly) MASConstraint *baseline;
+
+@property (nonatomic, readonly) MASConstraint *firstBaseline;
+@property (nonatomic, readonly) MASConstraint *lastBaseline;
#if TARGET_OS_IPHONE || TARGET_OS_TV
-- (MASConstraint *)leftMargin;
-- (MASConstraint *)rightMargin;
-- (MASConstraint *)topMargin;
-- (MASConstraint *)bottomMargin;
-- (MASConstraint *)leadingMargin;
-- (MASConstraint *)trailingMargin;
-- (MASConstraint *)centerXWithinMargins;
-- (MASConstraint *)centerYWithinMargins;
+@property (nonatomic, readonly) MASConstraint *leftMargin;
+@property (nonatomic, readonly) MASConstraint *rightMargin;
+@property (nonatomic, readonly) MASConstraint *topMargin;
+@property (nonatomic, readonly) MASConstraint *bottomMargin;
+@property (nonatomic, readonly) MASConstraint *leadingMargin;
+@property (nonatomic, readonly) MASConstraint *trailingMargin;
+@property (nonatomic, readonly) MASConstraint *centerXWithinMargins;
+@property (nonatomic, readonly) MASConstraint *centerYWithinMargins;
#endif
@@ -154,7 +163,7 @@
/**
* Sets the constraint debug name
*/
-- (MASConstraint * (^)(id key))key;
+@property (nonatomic, copy, readonly) MASConstraint * (^key)(id key);
// NSLayoutConstraint constant Setters
// for use outside of mas_updateConstraints/mas_makeConstraints blocks
@@ -202,6 +211,11 @@
@property (nonatomic, copy, readonly) MASConstraint *animator;
#endif
+/**
+ * Usually MASConstraintMaker but could be a parent MASConstraint
+ */
+@property (nonatomic, weak) id delegate;
+
/**
* Activates an NSLayoutConstraint if it's supported by an OS.
* Invokes install otherwise.
@@ -256,13 +270,28 @@
* Aliases to corresponding relation methods (for shorthand macros)
* Also needed to aid autocompletion
*/
-- (MASConstraint * (^)(id attr))mas_equalTo;
-- (MASConstraint * (^)(id attr))mas_greaterThanOrEqualTo;
-- (MASConstraint * (^)(id attr))mas_lessThanOrEqualTo;
+@property (nonatomic, copy, readonly) MASConstraint * (^mas_equalTo)(id attr);
+@property (nonatomic, copy, readonly) MASConstraint * (^mas_greaterThanOrEqualTo)(id attr);
+@property (nonatomic, copy, readonly) MASConstraint * (^mas_lessThanOrEqualTo)(id attr);
/**
* A dummy method to aid autocompletion
*/
-- (MASConstraint * (^)(id offset))mas_offset;
+@property (nonatomic, copy, readonly) MASConstraint * (^mas_offset)(id offset);
+
+@end
+
+
+@protocol MASConstraintDelegate
+
+/**
+ * Notifies the delegate when the constraint needs to be replaced with another constraint. For example
+ * A MASViewConstraint may turn into a MASCompositeConstraint when an array is passed to one of the equality blocks
+ */
+- (void)constraint:(MASConstraint *)constraint shouldBeReplacedWithConstraint:(MASConstraint *)replacementConstraint;
+
+- (MASConstraint *)constraint:(MASConstraint * _Nullable)constraint addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute;
@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Masonry/MASConstraint.m b/Masonry/MASConstraint.m
index b8841e58..ec7f898d 100644
--- a/Masonry/MASConstraint.m
+++ b/Masonry/MASConstraint.m
@@ -17,7 +17,7 @@ @implementation MASConstraint
#pragma mark - Init
-- (id)init {
+- (instancetype)init {
NSAssert(![self isMemberOfClass:[MASConstraint class]], @"MASConstraint is an abstract class, you should not instantiate it directly.");
return [super init];
}
@@ -212,7 +212,7 @@ - (MASConstraint *)centerY {
}
- (MASConstraint *)baseline {
- return [self addConstraintWithLayoutAttribute:NSLayoutAttributeBaseline];
+ return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLastBaseline];
}
- (MASConstraint *)firstBaseline {
diff --git a/Masonry/MASConstraintMaker.h b/Masonry/MASConstraintMaker.h
index 9a0bc8df..a58a86e1 100644
--- a/Masonry/MASConstraintMaker.h
+++ b/Masonry/MASConstraintMaker.h
@@ -20,10 +20,11 @@ typedef NS_OPTIONS(NSInteger, MASAttribute) {
MASAttributeHeight = 1 << NSLayoutAttributeHeight,
MASAttributeCenterX = 1 << NSLayoutAttributeCenterX,
MASAttributeCenterY = 1 << NSLayoutAttributeCenterY,
- MASAttributeBaseline = 1 << NSLayoutAttributeBaseline,
MASAttributeFirstBaseline = 1 << NSLayoutAttributeFirstBaseline,
MASAttributeLastBaseline = 1 << NSLayoutAttributeLastBaseline,
+
+ MASAttributeBaseline = MASAttributeLastBaseline,
#if TARGET_OS_IPHONE || TARGET_OS_TV
@@ -40,42 +41,80 @@ typedef NS_OPTIONS(NSInteger, MASAttribute) {
};
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol MASLayoutConstraint
+
+@property (nonatomic, readonly) MASConstraint *left;
+@property (nonatomic, readonly) MASConstraint *top;
+@property (nonatomic, readonly) MASConstraint *right;
+@property (nonatomic, readonly) MASConstraint *bottom;
+@property (nonatomic, readonly) MASConstraint *leading;
+@property (nonatomic, readonly) MASConstraint *trailing;
+@property (nonatomic, readonly) MASConstraint *width;
+@property (nonatomic, readonly) MASConstraint *height;
+@property (nonatomic, readonly) MASConstraint *centerX;
+@property (nonatomic, readonly) MASConstraint *centerY;
+
+/**
+ * Creates a MASCompositeConstraint with type MASCompositeConstraintTypeEdges
+ * which generates the appropriate MASViewConstraint children (top, left, bottom, right)
+ * with the first item set to the makers associated view
+ */
+@property (nonatomic, readonly) MASConstraint *edges;
+
+/**
+ * Creates a MASCompositeConstraint with type MASCompositeConstraintTypeSize
+ * which generates the appropriate MASViewConstraint children (width, height)
+ * with the first item set to the makers associated view
+ */
+@property (nonatomic, readonly) MASConstraint *size;
+
+/**
+ * Creates a MASCompositeConstraint with type MASCompositeConstraintTypeCenter
+ * which generates the appropriate MASViewConstraint children (centerX, centerY)
+ * with the first item set to the makers associated view
+ */
+@property (nonatomic, readonly) MASConstraint *center;
+
+@end
+
/**
* Provides factory methods for creating MASConstraints.
* Constraints are collected until they are ready to be installed
*
*/
-@interface MASConstraintMaker : NSObject
+@interface MASConstraintMaker : NSObject
/**
* The following properties return a new MASViewConstraint
* with the first item set to the makers associated view and the appropriate MASViewAttribute
*/
-@property (nonatomic, strong, readonly) MASConstraint *left;
-@property (nonatomic, strong, readonly) MASConstraint *top;
-@property (nonatomic, strong, readonly) MASConstraint *right;
-@property (nonatomic, strong, readonly) MASConstraint *bottom;
-@property (nonatomic, strong, readonly) MASConstraint *leading;
-@property (nonatomic, strong, readonly) MASConstraint *trailing;
-@property (nonatomic, strong, readonly) MASConstraint *width;
-@property (nonatomic, strong, readonly) MASConstraint *height;
-@property (nonatomic, strong, readonly) MASConstraint *centerX;
-@property (nonatomic, strong, readonly) MASConstraint *centerY;
-@property (nonatomic, strong, readonly) MASConstraint *baseline;
-
-@property (nonatomic, strong, readonly) MASConstraint *firstBaseline;
-@property (nonatomic, strong, readonly) MASConstraint *lastBaseline;
+@property (nonatomic, readonly) MASConstraint *left;
+@property (nonatomic, readonly) MASConstraint *top;
+@property (nonatomic, readonly) MASConstraint *right;
+@property (nonatomic, readonly) MASConstraint *bottom;
+@property (nonatomic, readonly) MASConstraint *leading;
+@property (nonatomic, readonly) MASConstraint *trailing;
+@property (nonatomic, readonly) MASConstraint *width;
+@property (nonatomic, readonly) MASConstraint *height;
+@property (nonatomic, readonly) MASConstraint *centerX;
+@property (nonatomic, readonly) MASConstraint *centerY;
+@property (nonatomic, readonly) MASConstraint *baseline;
+
+@property (nonatomic, readonly) MASConstraint *firstBaseline;
+@property (nonatomic, readonly) MASConstraint *lastBaseline;
#if TARGET_OS_IPHONE || TARGET_OS_TV
-@property (nonatomic, strong, readonly) MASConstraint *leftMargin;
-@property (nonatomic, strong, readonly) MASConstraint *rightMargin;
-@property (nonatomic, strong, readonly) MASConstraint *topMargin;
-@property (nonatomic, strong, readonly) MASConstraint *bottomMargin;
-@property (nonatomic, strong, readonly) MASConstraint *leadingMargin;
-@property (nonatomic, strong, readonly) MASConstraint *trailingMargin;
-@property (nonatomic, strong, readonly) MASConstraint *centerXWithinMargins;
-@property (nonatomic, strong, readonly) MASConstraint *centerYWithinMargins;
+@property (nonatomic, readonly) MASConstraint *leftMargin;
+@property (nonatomic, readonly) MASConstraint *rightMargin;
+@property (nonatomic, readonly) MASConstraint *topMargin;
+@property (nonatomic, readonly) MASConstraint *bottomMargin;
+@property (nonatomic, readonly) MASConstraint *leadingMargin;
+@property (nonatomic, readonly) MASConstraint *trailingMargin;
+@property (nonatomic, readonly) MASConstraint *centerXWithinMargins;
+@property (nonatomic, readonly) MASConstraint *centerYWithinMargins;
#endif
@@ -84,38 +123,38 @@ typedef NS_OPTIONS(NSInteger, MASAttribute) {
* to the makers associated view and children corresponding to the set bits in the
* MASAttribute parameter. Combine multiple attributes via binary-or.
*/
-@property (nonatomic, strong, readonly) MASConstraint *(^attributes)(MASAttribute attrs);
+@property (nonatomic, readonly) MASConstraint * (^attributes)(MASAttribute attrs);
/**
* Creates a MASCompositeConstraint with type MASCompositeConstraintTypeEdges
* which generates the appropriate MASViewConstraint children (top, left, bottom, right)
* with the first item set to the makers associated view
*/
-@property (nonatomic, strong, readonly) MASConstraint *edges;
+@property (nonatomic, readonly) MASConstraint *edges;
/**
* Creates a MASCompositeConstraint with type MASCompositeConstraintTypeSize
* which generates the appropriate MASViewConstraint children (width, height)
* with the first item set to the makers associated view
*/
-@property (nonatomic, strong, readonly) MASConstraint *size;
+@property (nonatomic, readonly) MASConstraint *size;
/**
* Creates a MASCompositeConstraint with type MASCompositeConstraintTypeCenter
* which generates the appropriate MASViewConstraint children (centerX, centerY)
* with the first item set to the makers associated view
*/
-@property (nonatomic, strong, readonly) MASConstraint *center;
+@property (nonatomic, readonly) MASConstraint *center;
/**
* Whether or not to check for an existing constraint instead of adding constraint
*/
-@property (nonatomic, assign) BOOL updateExisting;
+@property (nonatomic) BOOL updateExisting;
/**
* Whether or not to remove existing constraints prior to installing
*/
-@property (nonatomic, assign) BOOL removeExisting;
+@property (nonatomic) BOOL removeExisting;
/**
* initialises the maker with a default view
@@ -124,7 +163,12 @@ typedef NS_OPTIONS(NSInteger, MASAttribute) {
*
* @return a new MASConstraintMaker
*/
-- (id)initWithView:(MAS_VIEW *)view;
+- (instancetype)initWithView:(MAS_VIEW *)view NS_DESIGNATED_INITIALIZER;
+
+- (instancetype)initWithLayoutGuide:(MASLayoutGuide *)layoutGuide NS_DESIGNATED_INITIALIZER API_AVAILABLE(macos(10.11), ios(9.0));
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
/**
* Calls install method on any MASConstraints which have been created by this maker
@@ -133,6 +177,8 @@ typedef NS_OPTIONS(NSInteger, MASAttribute) {
*/
- (NSArray *)install;
-- (MASConstraint * (^)(dispatch_block_t))group;
+@property (nonatomic, copy, readonly) MASConstraint * (^group)(dispatch_block_t);
@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Masonry/MASConstraintMaker.m b/Masonry/MASConstraintMaker.m
index 26d377be..eba5f49f 100644
--- a/Masonry/MASConstraintMaker.m
+++ b/Masonry/MASConstraintMaker.m
@@ -12,29 +12,47 @@
#import "MASConstraint+Private.h"
#import "MASViewAttribute.h"
#import "View+MASAdditions.h"
+#import "LayoutGuide+MASAdditions.h"
@interface MASConstraintMaker ()
@property (nonatomic, weak) MAS_VIEW *view;
-@property (nonatomic, strong) NSMutableArray *constraints;
+@property (nullable, nonatomic, weak) MASLayoutGuide *item;
+@property (nonatomic) NSMutableArray *constraints;
@end
@implementation MASConstraintMaker
-- (id)initWithView:(MAS_VIEW *)view {
- self = [super init];
- if (!self) return nil;
-
- self.view = view;
- self.constraints = NSMutableArray.new;
-
+- (instancetype)initWithView:(MAS_VIEW *)view {
+ if (self = [super init]) {
+ self.view = view;
+ self.constraints = [NSMutableArray array];
+ }
+
+ return self;
+}
+
+- (instancetype)initWithLayoutGuide:(MASLayoutGuide *)layoutGuide {
+ NSAssert(layoutGuide.owningView != nil, @"layoutGuide's owningView must not be nil");
+ if (self = [super init]) {
+ self.view = layoutGuide.owningView;
+ self.item = layoutGuide;
+ self.constraints = [NSMutableArray array];
+ }
+
return self;
}
- (NSArray *)install {
if (self.removeExisting) {
- NSArray *installedConstraints = [MASViewConstraint installedConstraintsForView:self.view];
+ NSArray *installedConstraints;
+ if ([self.item isKindOfClass:MASLayoutGuide.class]) {
+ installedConstraints = [MASViewConstraint installedConstraintsForLayoutGuide:self.item];
+ } else {
+ installedConstraints = [MASViewConstraint installedConstraintsForView:self.view];
+ }
+
for (MASConstraint *constraint in installedConstraints) {
[constraint uninstall];
}
@@ -57,7 +75,7 @@ - (void)constraint:(MASConstraint *)constraint shouldBeReplacedWithConstraint:(M
}
- (MASConstraint *)constraint:(MASConstraint *)constraint addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute {
- MASViewAttribute *viewAttribute = [[MASViewAttribute alloc] initWithView:self.view layoutAttribute:layoutAttribute];
+ MASViewAttribute *viewAttribute = [[MASViewAttribute alloc] initWithView:self.view item:self.item layoutAttribute:layoutAttribute];
MASViewConstraint *newConstraint = [[MASViewConstraint alloc] initWithFirstViewAttribute:viewAttribute];
if ([constraint isKindOfClass:MASViewConstraint.class]) {
//replace with composite constraint
@@ -89,17 +107,19 @@ - (MASConstraint *)addConstraintWithAttributes:(MASAttribute)attrs {
NSAssert((attrs & anyAttribute) != 0, @"You didn't pass any attribute to make.attributes(...)");
NSMutableArray *attributes = [NSMutableArray array];
+
+#define layoutItem ((MAS_VIEW *)(self.item ?: self.view))
- if (attrs & MASAttributeLeft) [attributes addObject:self.view.mas_left];
- if (attrs & MASAttributeRight) [attributes addObject:self.view.mas_right];
- if (attrs & MASAttributeTop) [attributes addObject:self.view.mas_top];
- if (attrs & MASAttributeBottom) [attributes addObject:self.view.mas_bottom];
- if (attrs & MASAttributeLeading) [attributes addObject:self.view.mas_leading];
- if (attrs & MASAttributeTrailing) [attributes addObject:self.view.mas_trailing];
- if (attrs & MASAttributeWidth) [attributes addObject:self.view.mas_width];
- if (attrs & MASAttributeHeight) [attributes addObject:self.view.mas_height];
- if (attrs & MASAttributeCenterX) [attributes addObject:self.view.mas_centerX];
- if (attrs & MASAttributeCenterY) [attributes addObject:self.view.mas_centerY];
+ if (attrs & MASAttributeLeft) [attributes addObject:layoutItem.mas_left];
+ if (attrs & MASAttributeRight) [attributes addObject:layoutItem.mas_right];
+ if (attrs & MASAttributeTop) [attributes addObject:layoutItem.mas_top];
+ if (attrs & MASAttributeBottom) [attributes addObject:layoutItem.mas_bottom];
+ if (attrs & MASAttributeLeading) [attributes addObject:layoutItem.mas_leading];
+ if (attrs & MASAttributeTrailing) [attributes addObject:layoutItem.mas_trailing];
+ if (attrs & MASAttributeWidth) [attributes addObject:layoutItem.mas_width];
+ if (attrs & MASAttributeHeight) [attributes addObject:layoutItem.mas_height];
+ if (attrs & MASAttributeCenterX) [attributes addObject:layoutItem.mas_centerX];
+ if (attrs & MASAttributeCenterY) [attributes addObject:layoutItem.mas_centerY];
if (attrs & MASAttributeBaseline) [attributes addObject:self.view.mas_baseline];
if (attrs & MASAttributeFirstBaseline) [attributes addObject:self.view.mas_firstBaseline];
if (attrs & MASAttributeLastBaseline) [attributes addObject:self.view.mas_lastBaseline];
@@ -176,7 +196,7 @@ - (MASConstraint *)centerY {
}
- (MASConstraint *)baseline {
- return [self addConstraintWithLayoutAttribute:NSLayoutAttributeBaseline];
+ return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLastBaseline];
}
- (MASConstraint *(^)(MASAttribute))attributes {
diff --git a/Masonry/MASLayoutConstraint.h b/Masonry/MASLayoutConstraint.h
index 699041cb..88ffd3ad 100644
--- a/Masonry/MASLayoutConstraint.h
+++ b/Masonry/MASLayoutConstraint.h
@@ -8,6 +8,8 @@
#import "MASUtilities.h"
+NS_ASSUME_NONNULL_BEGIN
+
/**
* When you are debugging or printing the constraints attached to a view this subclass
* makes it easier to identify which constraints have been created via Masonry
@@ -17,6 +19,8 @@
/**
* a key to associate with this constraint
*/
-@property (nonatomic, strong) id mas_key;
+@property (nonatomic) id mas_key;
@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Masonry/MASUtilities.h b/Masonry/MASUtilities.h
index 1dbfd938..3cf10da4 100644
--- a/Masonry/MASUtilities.h
+++ b/Masonry/MASUtilities.h
@@ -8,12 +8,11 @@
#import
-
-
#if TARGET_OS_IPHONE || TARGET_OS_TV
#import
#define MAS_VIEW UIView
+ #define MASLayoutGuide UILayoutGuide
#define MAS_VIEW_CONTROLLER UIViewController
#define MASEdgeInsets UIEdgeInsets
@@ -28,6 +27,7 @@
#import
#define MAS_VIEW NSView
+ #define MASLayoutGuide NSLayoutGuide
#define MASEdgeInsets NSEdgeInsets
typedef NSLayoutPriority MASLayoutPriority;
@@ -69,68 +69,24 @@
#define MAS_NSUINT_BIT (CHAR_BIT * sizeof(NSUInteger))
#define MAS_NSUINTROTATE(val, howmuch) ((((NSUInteger)val) << howmuch) | (((NSUInteger)val) >> (MAS_NSUINT_BIT - howmuch)))
+#define MAS_ATTR_FORWARD(attr) \
+- (MASViewAttribute *)attr { \
+ return [self mas_##attr]; \
+}
+
+#define MAS_ATTR_FORWARD_AVAILABLE(attr, available) \
+- (MASViewAttribute *)attr available { \
+ return [self mas_##attr]; \
+}
+
+NS_ASSUME_NONNULL_BEGIN
+
/**
* Given a scalar or struct value, wraps it in NSValue
* Based on EXPObjectify: https://github.com/specta/expecta
*/
-static inline id _MASBoxValue(const char *type, ...) {
- va_list v;
- va_start(v, type);
- id obj = nil;
- if (strcmp(type, @encode(id)) == 0) {
- id actual = va_arg(v, id);
- obj = actual;
- } else if (strcmp(type, @encode(CGPoint)) == 0) {
- CGPoint actual = (CGPoint)va_arg(v, CGPoint);
- obj = [NSValue value:&actual withObjCType:type];
- } else if (strcmp(type, @encode(CGSize)) == 0) {
- CGSize actual = (CGSize)va_arg(v, CGSize);
- obj = [NSValue value:&actual withObjCType:type];
- } else if (strcmp(type, @encode(MASEdgeInsets)) == 0) {
- MASEdgeInsets actual = (MASEdgeInsets)va_arg(v, MASEdgeInsets);
- obj = [NSValue value:&actual withObjCType:type];
- } else if (strcmp(type, @encode(double)) == 0) {
- double actual = (double)va_arg(v, double);
- obj = [NSNumber numberWithDouble:actual];
- } else if (strcmp(type, @encode(float)) == 0) {
- float actual = (float)va_arg(v, double);
- obj = [NSNumber numberWithFloat:actual];
- } else if (strcmp(type, @encode(int)) == 0) {
- int actual = (int)va_arg(v, int);
- obj = [NSNumber numberWithInt:actual];
- } else if (strcmp(type, @encode(long)) == 0) {
- long actual = (long)va_arg(v, long);
- obj = [NSNumber numberWithLong:actual];
- } else if (strcmp(type, @encode(long long)) == 0) {
- long long actual = (long long)va_arg(v, long long);
- obj = [NSNumber numberWithLongLong:actual];
- } else if (strcmp(type, @encode(short)) == 0) {
- short actual = (short)va_arg(v, int);
- obj = [NSNumber numberWithShort:actual];
- } else if (strcmp(type, @encode(char)) == 0) {
- char actual = (char)va_arg(v, int);
- obj = [NSNumber numberWithChar:actual];
- } else if (strcmp(type, @encode(bool)) == 0) {
- bool actual = (bool)va_arg(v, int);
- obj = [NSNumber numberWithBool:actual];
- } else if (strcmp(type, @encode(unsigned char)) == 0) {
- unsigned char actual = (unsigned char)va_arg(v, unsigned int);
- obj = [NSNumber numberWithUnsignedChar:actual];
- } else if (strcmp(type, @encode(unsigned int)) == 0) {
- unsigned int actual = (unsigned int)va_arg(v, unsigned int);
- obj = [NSNumber numberWithUnsignedInt:actual];
- } else if (strcmp(type, @encode(unsigned long)) == 0) {
- unsigned long actual = (unsigned long)va_arg(v, unsigned long);
- obj = [NSNumber numberWithUnsignedLong:actual];
- } else if (strcmp(type, @encode(unsigned long long)) == 0) {
- unsigned long long actual = (unsigned long long)va_arg(v, unsigned long long);
- obj = [NSNumber numberWithUnsignedLongLong:actual];
- } else if (strcmp(type, @encode(unsigned short)) == 0) {
- unsigned short actual = (unsigned short)va_arg(v, unsigned int);
- obj = [NSNumber numberWithUnsignedShort:actual];
- }
- va_end(v);
- return obj;
-}
+FOUNDATION_EXPORT id _Nullable _MASBoxValue(const char *type, ...);
+
+NS_ASSUME_NONNULL_END
#define MASBoxValue(value) _MASBoxValue(@encode(__typeof__((value))), (value))
diff --git a/Masonry/MASUtilities.m b/Masonry/MASUtilities.m
new file mode 100644
index 00000000..8a06312b
--- /dev/null
+++ b/Masonry/MASUtilities.m
@@ -0,0 +1,73 @@
+//
+// MASUtilities.m
+// Masonry
+//
+// Created by Jonas Budelmann on 19/08/13.
+// Copyright (c) 2013 Jonas Budelmann. All rights reserved.
+//
+
+#import "MASUtilities.h"
+
+/**
+ * Given a scalar or struct value, wraps it in NSValue
+ * Based on EXPObjectify: https://github.com/specta/expecta
+ */
+FOUNDATION_EXPORT id _MASBoxValue(const char *type, ...) {
+ va_list v;
+ va_start(v, type);
+ id obj = nil;
+ if (strcmp(type, @encode(id)) == 0) {
+ id actual = va_arg(v, id);
+ obj = actual;
+ } else if (strcmp(type, @encode(CGPoint)) == 0) {
+ CGPoint actual = (CGPoint)va_arg(v, CGPoint);
+ obj = [NSValue value:&actual withObjCType:type];
+ } else if (strcmp(type, @encode(CGSize)) == 0) {
+ CGSize actual = (CGSize)va_arg(v, CGSize);
+ obj = [NSValue value:&actual withObjCType:type];
+ } else if (strcmp(type, @encode(MASEdgeInsets)) == 0) {
+ MASEdgeInsets actual = (MASEdgeInsets)va_arg(v, MASEdgeInsets);
+ obj = [NSValue value:&actual withObjCType:type];
+ } else if (strcmp(type, @encode(double)) == 0) {
+ double actual = (double)va_arg(v, double);
+ obj = [NSNumber numberWithDouble:actual];
+ } else if (strcmp(type, @encode(float)) == 0) {
+ float actual = (float)va_arg(v, double);
+ obj = [NSNumber numberWithFloat:actual];
+ } else if (strcmp(type, @encode(int)) == 0) {
+ int actual = (int)va_arg(v, int);
+ obj = [NSNumber numberWithInt:actual];
+ } else if (strcmp(type, @encode(long)) == 0) {
+ long actual = (long)va_arg(v, long);
+ obj = [NSNumber numberWithLong:actual];
+ } else if (strcmp(type, @encode(long long)) == 0) {
+ long long actual = (long long)va_arg(v, long long);
+ obj = [NSNumber numberWithLongLong:actual];
+ } else if (strcmp(type, @encode(short)) == 0) {
+ short actual = (short)va_arg(v, int);
+ obj = [NSNumber numberWithShort:actual];
+ } else if (strcmp(type, @encode(char)) == 0) {
+ char actual = (char)va_arg(v, int);
+ obj = [NSNumber numberWithChar:actual];
+ } else if (strcmp(type, @encode(bool)) == 0) {
+ bool actual = (bool)va_arg(v, int);
+ obj = [NSNumber numberWithBool:actual];
+ } else if (strcmp(type, @encode(unsigned char)) == 0) {
+ unsigned char actual = (unsigned char)va_arg(v, unsigned int);
+ obj = [NSNumber numberWithUnsignedChar:actual];
+ } else if (strcmp(type, @encode(unsigned int)) == 0) {
+ unsigned int actual = (unsigned int)va_arg(v, unsigned int);
+ obj = [NSNumber numberWithUnsignedInt:actual];
+ } else if (strcmp(type, @encode(unsigned long)) == 0) {
+ unsigned long actual = (unsigned long)va_arg(v, unsigned long);
+ obj = [NSNumber numberWithUnsignedLong:actual];
+ } else if (strcmp(type, @encode(unsigned long long)) == 0) {
+ unsigned long long actual = (unsigned long long)va_arg(v, unsigned long long);
+ obj = [NSNumber numberWithUnsignedLongLong:actual];
+ } else if (strcmp(type, @encode(unsigned short)) == 0) {
+ unsigned short actual = (unsigned short)va_arg(v, unsigned int);
+ obj = [NSNumber numberWithUnsignedShort:actual];
+ }
+ va_end(v);
+ return obj;
+}
diff --git a/Masonry/MASViewAttribute.h b/Masonry/MASViewAttribute.h
index 601c25d1..298dd7bc 100644
--- a/Masonry/MASViewAttribute.h
+++ b/Masonry/MASViewAttribute.h
@@ -8,6 +8,8 @@
#import "MASUtilities.h"
+NS_ASSUME_NONNULL_BEGIN
+
/**
* An immutable tuple which stores the view and the related NSLayoutAttribute.
* Describes part of either the left or right hand side of a constraint equation
@@ -27,17 +29,20 @@
/**
* The attribute which the reciever relates to
*/
-@property (nonatomic, assign, readonly) NSLayoutAttribute layoutAttribute;
+@property (nonatomic, readonly) NSLayoutAttribute layoutAttribute;
/**
* Convenience initializer.
*/
-- (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute;
+- (instancetype)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute;
/**
* The designated initializer.
*/
-- (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute;
+- (instancetype)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute NS_DESIGNATED_INITIALIZER;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
/**
* Determine whether the layoutAttribute is a size attribute
@@ -47,3 +52,5 @@
- (BOOL)isSizeAttribute;
@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Masonry/MASViewAttribute.m b/Masonry/MASViewAttribute.m
index e573e8bd..8b09ec62 100644
--- a/Masonry/MASViewAttribute.m
+++ b/Masonry/MASViewAttribute.m
@@ -10,19 +10,17 @@
@implementation MASViewAttribute
-- (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute {
- self = [self initWithView:view item:view layoutAttribute:layoutAttribute];
- return self;
+- (instancetype)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute {
+ return [self initWithView:view item:view layoutAttribute:layoutAttribute];
}
-- (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute {
- self = [super init];
- if (!self) return nil;
-
- _view = view;
- _item = item;
- _layoutAttribute = layoutAttribute;
-
+- (instancetype)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute {
+ if (self = [super init]) {
+ _view = view;
+ _item = item?:view;
+ _layoutAttribute = layoutAttribute;
+ }
+
return self;
}
diff --git a/Masonry/MASViewConstraint.h b/Masonry/MASViewConstraint.h
index ec390d15..d52f0450 100644
--- a/Masonry/MASViewConstraint.h
+++ b/Masonry/MASViewConstraint.h
@@ -11,6 +11,8 @@
#import "MASLayoutConstraint.h"
#import "MASUtilities.h"
+NS_ASSUME_NONNULL_BEGIN
+
/**
* A single constraint.
* Contains the attributes neccessary for creating a NSLayoutConstraint and adding it to the appropriate view
@@ -20,12 +22,12 @@
/**
* First item/view and first attribute of the NSLayoutConstraint
*/
-@property (nonatomic, strong, readonly) MASViewAttribute *firstViewAttribute;
+@property (nonatomic, readonly) MASViewAttribute *firstViewAttribute;
/**
* Second item/view and second attribute of the NSLayoutConstraint
*/
-@property (nonatomic, strong, readonly) MASViewAttribute *secondViewAttribute;
+@property (nonatomic, readonly) MASViewAttribute *secondViewAttribute;
/**
* initialises the MASViewConstraint with the first part of the equation
@@ -34,7 +36,10 @@
*
* @return a new view constraint
*/
-- (id)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute;
+- (instancetype)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute NS_DESIGNATED_INITIALIZER;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
/**
* Returns all MASViewConstraints installed with this view as a first item.
@@ -45,4 +50,8 @@
*/
+ (NSArray *)installedConstraintsForView:(MAS_VIEW *)view;
++ (NSArray *)installedConstraintsForLayoutGuide:(MASLayoutGuide *)layoutGuide API_AVAILABLE(macos(10.11), ios(9.0));
+
@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Masonry/MASViewConstraint.m b/Masonry/MASViewConstraint.m
index af3f0b44..7badcd0e 100644
--- a/Masonry/MASViewConstraint.m
+++ b/Masonry/MASViewConstraint.m
@@ -21,13 +21,33 @@ @interface MAS_VIEW (MASConstraints)
@implementation MAS_VIEW (MASConstraints)
-static char kInstalledConstraintsKey;
+- (NSMutableSet *)mas_installedConstraints {
+ const void *key = @selector(mas_installedConstraints);
+ NSMutableSet *constraints = objc_getAssociatedObject(self, key);
+ if (!constraints) {
+ constraints = [NSMutableSet set];
+ objc_setAssociatedObject(self, key, constraints, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+ }
+ return constraints;
+}
+
+@end
+
+
+@interface MASLayoutGuide (MASConstraints)
+
+@property (nonatomic, readonly) NSMutableSet *mas_installedConstraints;
+
+@end
+
+@implementation MASLayoutGuide (MASConstraints)
- (NSMutableSet *)mas_installedConstraints {
- NSMutableSet *constraints = objc_getAssociatedObject(self, &kInstalledConstraintsKey);
+ const void *key = @selector(mas_installedConstraints);
+ NSMutableSet *constraints = objc_getAssociatedObject(self, key);
if (!constraints) {
constraints = [NSMutableSet set];
- objc_setAssociatedObject(self, &kInstalledConstraintsKey, constraints, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+ objc_setAssociatedObject(self, key, constraints, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
return constraints;
}
@@ -37,29 +57,28 @@ - (NSMutableSet *)mas_installedConstraints {
@interface MASViewConstraint ()
-@property (nonatomic, strong, readwrite) MASViewAttribute *secondViewAttribute;
+@property (nonatomic, readwrite) MASViewAttribute *secondViewAttribute;
@property (nonatomic, weak) MAS_VIEW *installedView;
@property (nonatomic, weak) MASLayoutConstraint *layoutConstraint;
-@property (nonatomic, assign) NSLayoutRelation layoutRelation;
-@property (nonatomic, assign) MASLayoutPriority layoutPriority;
-@property (nonatomic, assign) CGFloat layoutMultiplier;
-@property (nonatomic, assign) CGFloat layoutConstant;
-@property (nonatomic, assign) BOOL hasLayoutRelation;
-@property (nonatomic, strong) id mas_key;
-@property (nonatomic, assign) BOOL useAnimator;
+@property (nonatomic) NSLayoutRelation layoutRelation;
+@property (nonatomic) MASLayoutPriority layoutPriority;
+@property (nonatomic) CGFloat layoutMultiplier;
+@property (nonatomic) CGFloat layoutConstant;
+@property (nonatomic) BOOL hasLayoutRelation;
+@property (nonatomic) id mas_key;
+@property (nonatomic) BOOL useAnimator;
@end
@implementation MASViewConstraint
-- (id)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute {
- self = [super init];
- if (!self) return nil;
-
- _firstViewAttribute = firstViewAttribute;
- self.layoutPriority = MASLayoutPriorityRequired;
- self.layoutMultiplier = 1;
-
+- (instancetype)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute {
+ if (self = [super init]) {
+ _firstViewAttribute = firstViewAttribute;
+ self.layoutPriority = MASLayoutPriorityRequired;
+ self.layoutMultiplier = 1;
+ }
+
return self;
}
@@ -81,6 +100,10 @@ + (NSArray *)installedConstraintsForView:(MAS_VIEW *)view {
return [view.mas_installedConstraints allObjects];
}
++ (NSArray *)installedConstraintsForLayoutGuide:(MASLayoutGuide *)layoutGuide {
+ return [layoutGuide.mas_installedConstraints allObjects];
+}
+
#pragma mark - Private
- (void)setLayoutConstant:(CGFloat)layoutConstant {
@@ -121,16 +144,27 @@ - (BOOL)hasBeenInstalled {
- (void)setSecondViewAttribute:(id)secondViewAttribute {
if ([secondViewAttribute isKindOfClass:NSValue.class]) {
+ if ([self.firstViewAttribute.item isKindOfClass:MASLayoutGuide.class]) {
+ if (!self.firstViewAttribute.isSizeAttribute) {
+ _secondViewAttribute = [[MASViewAttribute alloc] initWithView:self.firstViewAttribute.view
+ layoutAttribute:self.firstViewAttribute.layoutAttribute];
+ }
+ }
+
[self setLayoutConstantWithValue:secondViewAttribute];
} else if ([secondViewAttribute isKindOfClass:MAS_VIEW.class]) {
_secondViewAttribute = [[MASViewAttribute alloc] initWithView:secondViewAttribute layoutAttribute:self.firstViewAttribute.layoutAttribute];
} else if ([secondViewAttribute isKindOfClass:MASViewAttribute.class]) {
MASViewAttribute *attr = secondViewAttribute;
if (attr.layoutAttribute == NSLayoutAttributeNotAnAttribute) {
- _secondViewAttribute = [[MASViewAttribute alloc] initWithView:attr.view item:attr.item layoutAttribute:self.firstViewAttribute.layoutAttribute];;
+ _secondViewAttribute = [[MASViewAttribute alloc] initWithView:attr.view item:attr.item layoutAttribute:self.firstViewAttribute.layoutAttribute];
} else {
_secondViewAttribute = secondViewAttribute;
}
+ } else if ([secondViewAttribute isKindOfClass:MASLayoutGuide.class]) {
+ _secondViewAttribute = [[MASViewAttribute alloc] initWithView:((MASLayoutGuide *)secondViewAttribute).owningView
+ item:secondViewAttribute
+ layoutAttribute:self.firstViewAttribute.layoutAttribute];
} else {
NSAssert(NO, @"attempting to add unsupported attribute: %@", secondViewAttribute);
}
@@ -177,7 +211,7 @@ - (void)setSecondViewAttribute:(id)secondViewAttribute {
return ^id(id attribute, NSLayoutRelation relation) {
if ([attribute isKindOfClass:NSArray.class]) {
NSAssert(!self.hasLayoutRelation, @"Redefinition of constraint relation");
- NSMutableArray *children = NSMutableArray.new;
+ NSMutableArray *children = [NSMutableArray array];
for (id attr in attribute) {
MASViewConstraint *viewConstraint = [self copy];
viewConstraint.layoutRelation = relation;
@@ -363,8 +397,13 @@ - (void)install {
existingConstraint.constant = layoutConstraint.constant;
self.layoutConstraint = existingConstraint;
} else {
- [self.installedView addConstraint:layoutConstraint];
self.layoutConstraint = layoutConstraint;
+ if ([self supportsActiveProperty]) {
+ layoutConstraint.active = YES;
+ } else {
+ [self.installedView addConstraint:layoutConstraint];
+ }
+
[firstLayoutItem.mas_installedConstraints addObject:self];
}
}
@@ -392,15 +431,13 @@ - (MASLayoutConstraint *)layoutConstraintSimilarTo:(MASLayoutConstraint *)layout
- (void)uninstall {
if ([self supportsActiveProperty]) {
self.layoutConstraint.active = NO;
- [self.firstViewAttribute.view.mas_installedConstraints removeObject:self];
- return;
+ } else {
+ [self.installedView removeConstraint:self.layoutConstraint];
}
-
- [self.installedView removeConstraint:self.layoutConstraint];
+
+ [self.firstViewAttribute.view.mas_installedConstraints removeObject:self];
self.layoutConstraint = nil;
self.installedView = nil;
-
- [self.firstViewAttribute.view.mas_installedConstraints removeObject:self];
}
@end
diff --git a/Masonry/Masonry.h b/Masonry/Masonry.h
index d1bd579d..b85dae49 100644
--- a/Masonry/Masonry.h
+++ b/Masonry/Masonry.h
@@ -18,6 +18,8 @@ FOUNDATION_EXPORT const unsigned char MasonryVersionString[];
#import "View+MASAdditions.h"
#import "View+MASShorthandAdditions.h"
#import "ViewController+MASAdditions.h"
+#import "LayoutGuide+MASAdditions.h"
+#import "LayoutGuide+MASShorthandAdditions.h"
#import "NSArray+MASAdditions.h"
#import "NSArray+MASShorthandAdditions.h"
#import "MASConstraint.h"
diff --git a/Masonry/NSArray+MASAdditions.h b/Masonry/NSArray+MASAdditions.h
index 587618d9..bdb21da8 100644
--- a/Masonry/NSArray+MASAdditions.h
+++ b/Masonry/NSArray+MASAdditions.h
@@ -15,6 +15,8 @@ typedef NS_ENUM(NSUInteger, MASAxisType) {
MASAxisTypeVertical
};
+NS_ASSUME_NONNULL_BEGIN
+
@interface NSArray (MASAdditions)
/**
@@ -25,7 +27,7 @@ typedef NS_ENUM(NSUInteger, MASAxisType) {
*
* @return Array of created MASConstraints
*/
-- (NSArray *)mas_makeConstraints:(void (NS_NOESCAPE ^)(MASConstraintMaker *make))block;
+- (NSArray *)mas_makeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
/**
* Creates a MASConstraintMaker with each view in the callee.
@@ -36,7 +38,7 @@ typedef NS_ENUM(NSUInteger, MASAxisType) {
*
* @return Array of created/updated MASConstraints
*/
-- (NSArray *)mas_updateConstraints:(void (NS_NOESCAPE ^)(MASConstraintMaker *make))block;
+- (NSArray *)mas_updateConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
/**
* Creates a MASConstraintMaker with each view in the callee.
@@ -47,7 +49,7 @@ typedef NS_ENUM(NSUInteger, MASAxisType) {
*
* @return Array of created/updated MASConstraints
*/
-- (NSArray *)mas_remakeConstraints:(void (NS_NOESCAPE ^)(MASConstraintMaker *make))block;
+- (NSArray *)mas_remakeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
/**
* distribute with fixed spacing
@@ -70,3 +72,5 @@ typedef NS_ENUM(NSUInteger, MASAxisType) {
- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedItemLength:(CGFloat)fixedItemLength leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing;
@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Masonry/NSArray+MASAdditions.m b/Masonry/NSArray+MASAdditions.m
index 831d8cda..269a33a6 100644
--- a/Masonry/NSArray+MASAdditions.m
+++ b/Masonry/NSArray+MASAdditions.m
@@ -11,7 +11,7 @@
@implementation NSArray (MASAdditions)
-- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block {
+- (NSArray *)mas_makeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block {
NSMutableArray *constraints = [NSMutableArray array];
for (MAS_VIEW *view in self) {
NSAssert([view isKindOfClass:[MAS_VIEW class]], @"All objects in the array must be views");
@@ -20,7 +20,7 @@ - (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block {
return constraints;
}
-- (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block {
+- (NSArray *)mas_updateConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block {
NSMutableArray *constraints = [NSMutableArray array];
for (MAS_VIEW *view in self) {
NSAssert([view isKindOfClass:[MAS_VIEW class]], @"All objects in the array must be views");
@@ -29,7 +29,7 @@ - (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block {
return constraints;
}
-- (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block {
+- (NSArray *)mas_remakeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block {
NSMutableArray *constraints = [NSMutableArray array];
for (MAS_VIEW *view in self) {
NSAssert([view isKindOfClass:[MAS_VIEW class]], @"All objects in the array must be views");
diff --git a/Masonry/NSArray+MASShorthandAdditions.h b/Masonry/NSArray+MASShorthandAdditions.h
index 8b473697..7aaeb18b 100644
--- a/Masonry/NSArray+MASShorthandAdditions.h
+++ b/Masonry/NSArray+MASShorthandAdditions.h
@@ -10,32 +10,20 @@
#ifdef MAS_SHORTHAND
+NS_ASSUME_NONNULL_BEGIN
+
/**
* Shorthand array additions without the 'mas_' prefixes,
* only enabled if MAS_SHORTHAND is defined
*/
@interface NSArray (MASShorthandAdditions)
-- (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block;
-- (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block;
-- (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block;
+- (NSArray *)makeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
+- (NSArray *)updateConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
+- (NSArray *)remakeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
@end
-@implementation NSArray (MASShorthandAdditions)
-
-- (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block {
- return [self mas_makeConstraints:block];
-}
-
-- (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block {
- return [self mas_updateConstraints:block];
-}
-
-- (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block {
- return [self mas_remakeConstraints:block];
-}
-
-@end
+NS_ASSUME_NONNULL_END
#endif
diff --git a/Masonry/NSArray+MASShorthandAdditions.m b/Masonry/NSArray+MASShorthandAdditions.m
new file mode 100644
index 00000000..245c5720
--- /dev/null
+++ b/Masonry/NSArray+MASShorthandAdditions.m
@@ -0,0 +1,25 @@
+//
+// NSArray+MASShorthandAdditions.m
+// Masonry
+//
+// Created by Jonas Budelmann on 22/07/13.
+// Copyright (c) 2013 Jonas Budelmann. All rights reserved.
+//
+
+#import "NSArray+MASShorthandAdditions.h"
+
+@implementation NSArray (MASShorthandAdditions)
+
+- (NSArray *)makeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *))block {
+ return [self mas_makeConstraints:block];
+}
+
+- (NSArray *)updateConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *))block {
+ return [self mas_updateConstraints:block];
+}
+
+- (NSArray *)remakeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *))block {
+ return [self mas_remakeConstraints:block];
+}
+
+@end
diff --git a/Masonry/NSLayoutConstraint+MASDebugAdditions.h b/Masonry/NSLayoutConstraint+MASDebugAdditions.h
index 1279b4fd..8b6458b2 100644
--- a/Masonry/NSLayoutConstraint+MASDebugAdditions.h
+++ b/Masonry/NSLayoutConstraint+MASDebugAdditions.h
@@ -8,9 +8,13 @@
#import "MASUtilities.h"
+NS_ASSUME_NONNULL_BEGIN
+
/**
* makes debug and log output of NSLayoutConstraints more readable
*/
@interface NSLayoutConstraint (MASDebugAdditions)
@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Masonry/NSLayoutConstraint+MASDebugAdditions.m b/Masonry/NSLayoutConstraint+MASDebugAdditions.m
index f6c43f54..b365fd7e 100644
--- a/Masonry/NSLayoutConstraint+MASDebugAdditions.m
+++ b/Masonry/NSLayoutConstraint+MASDebugAdditions.m
@@ -42,7 +42,7 @@ + (NSDictionary *)layoutAttributeDescriptionsByValue {
@(NSLayoutAttributeHeight) : @"height",
@(NSLayoutAttributeCenterX) : @"centerX",
@(NSLayoutAttributeCenterY) : @"centerY",
- @(NSLayoutAttributeBaseline) : @"baseline",
+
@(NSLayoutAttributeFirstBaseline) : @"firstBaseline",
@(NSLayoutAttributeLastBaseline) : @"lastBaseline",
diff --git a/Masonry/View+MASAdditions.h b/Masonry/View+MASAdditions.h
index 00477c1c..c27ab15b 100644
--- a/Masonry/View+MASAdditions.h
+++ b/Masonry/View+MASAdditions.h
@@ -1,5 +1,5 @@
//
-// UIView+MASAdditions.h
+// View+MASAdditions.h
// Masonry
//
// Created by Jonas Budelmann on 20/07/13.
@@ -10,6 +10,8 @@
#import "MASConstraintMaker.h"
#import "MASViewAttribute.h"
+NS_ASSUME_NONNULL_BEGIN
+
/**
* Provides constraint maker block
* and convience methods for creating MASViewAttribute which are view + NSLayoutAttribute pairs
@@ -19,51 +21,52 @@
/**
* following properties return a new MASViewAttribute with current view and appropriate NSLayoutAttribute
*/
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_left;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_top;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_right;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_bottom;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_leading;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_trailing;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_width;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_height;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_centerX;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_centerY;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_baseline;
-@property (nonatomic, strong, readonly) MASViewAttribute *(^mas_attribute)(NSLayoutAttribute attr);
-
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_firstBaseline;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_lastBaseline;
+@property (nonatomic, readonly) MASViewAttribute *mas_left;
+@property (nonatomic, readonly) MASViewAttribute *mas_top;
+@property (nonatomic, readonly) MASViewAttribute *mas_right;
+@property (nonatomic, readonly) MASViewAttribute *mas_bottom;
+@property (nonatomic, readonly) MASViewAttribute *mas_leading;
+@property (nonatomic, readonly) MASViewAttribute *mas_trailing;
+@property (nonatomic, readonly) MASViewAttribute *mas_width;
+@property (nonatomic, readonly) MASViewAttribute *mas_height;
+@property (nonatomic, readonly) MASViewAttribute *mas_centerX;
+@property (nonatomic, readonly) MASViewAttribute *mas_centerY;
+@property (nonatomic, readonly) MASViewAttribute *mas_baseline;
+
+@property (nonatomic, copy, readonly) MASViewAttribute * (^mas_attribute)(NSLayoutAttribute attr);
+
+@property (nonatomic, readonly) MASViewAttribute *mas_firstBaseline;
+@property (nonatomic, readonly) MASViewAttribute *mas_lastBaseline;
#if TARGET_OS_IPHONE || TARGET_OS_TV
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_leftMargin;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_rightMargin;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_topMargin;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomMargin;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_leadingMargin;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_trailingMargin;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_centerXWithinMargins;
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_centerYWithinMargins;
-
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuide NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideLeading NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideTrailing NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideLeft NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideRight NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideTop NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideBottom NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideWidth NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideHeight NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideCenterX NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideCenterY NS_AVAILABLE_IOS(11.0);
+@property (nonatomic, readonly) MASViewAttribute *mas_leftMargin;
+@property (nonatomic, readonly) MASViewAttribute *mas_rightMargin;
+@property (nonatomic, readonly) MASViewAttribute *mas_topMargin;
+@property (nonatomic, readonly) MASViewAttribute *mas_bottomMargin;
+@property (nonatomic, readonly) MASViewAttribute *mas_leadingMargin;
+@property (nonatomic, readonly) MASViewAttribute *mas_trailingMargin;
+@property (nonatomic, readonly) MASViewAttribute *mas_centerXWithinMargins;
+@property (nonatomic, readonly) MASViewAttribute *mas_centerYWithinMargins;
+
+@property (nonatomic, readonly) MASViewAttribute *mas_safeAreaLayoutGuide API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_safeAreaLayoutGuideLeading API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_safeAreaLayoutGuideTrailing API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_safeAreaLayoutGuideLeft API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_safeAreaLayoutGuideRight API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_safeAreaLayoutGuideTop API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_safeAreaLayoutGuideBottom API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_safeAreaLayoutGuideWidth API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_safeAreaLayoutGuideHeight API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_safeAreaLayoutGuideCenterX API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_safeAreaLayoutGuideCenterY API_AVAILABLE(ios(11.0));
#endif
/**
* a key to associate with this view
*/
-@property (nonatomic, strong) id mas_key;
+@property (nonatomic) id mas_key;
/**
* Finds the closest common superview between this view and another view
@@ -72,7 +75,7 @@
*
* @return returns nil if common superview could not be found
*/
-- (instancetype)mas_closestCommonSuperview:(MAS_VIEW *)view;
+- (__kindof MAS_VIEW *)mas_closestCommonSuperview:(MAS_VIEW *)view;
/**
* Creates a MASConstraintMaker with the callee view.
@@ -82,7 +85,7 @@
*
* @return Array of created MASConstraints
*/
-- (NSArray *)mas_makeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;
+- (NSArray *)mas_makeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
/**
* Creates a MASConstraintMaker with the callee view.
@@ -93,7 +96,7 @@
*
* @return Array of created/updated MASConstraints
*/
-- (NSArray *)mas_updateConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;
+- (NSArray *)mas_updateConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
/**
* Creates a MASConstraintMaker with the callee view.
@@ -104,6 +107,8 @@
*
* @return Array of created/updated MASConstraints
*/
-- (NSArray *)mas_remakeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;
+- (NSArray *)mas_remakeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Masonry/View+MASAdditions.m b/Masonry/View+MASAdditions.m
index b99316ad..218f2835 100644
--- a/Masonry/View+MASAdditions.m
+++ b/Masonry/View+MASAdditions.m
@@ -1,5 +1,5 @@
//
-// UIView+MASAdditions.m
+// View+MASAdditions.m
// Masonry
//
// Created by Jonas Budelmann on 20/07/13.
@@ -11,14 +11,14 @@
@implementation MAS_VIEW (MASAdditions)
-- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block {
+- (NSArray *)mas_makeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *))block {
self.translatesAutoresizingMaskIntoConstraints = NO;
MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self];
block(constraintMaker);
return [constraintMaker install];
}
-- (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *))block {
+- (NSArray *)mas_updateConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *))block {
self.translatesAutoresizingMaskIntoConstraints = NO;
MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self];
constraintMaker.updateExisting = YES;
@@ -26,7 +26,7 @@ - (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *))block {
return [constraintMaker install];
}
-- (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block {
+- (NSArray *)mas_remakeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block {
self.translatesAutoresizingMaskIntoConstraints = NO;
MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self];
constraintMaker.removeExisting = YES;
@@ -77,11 +77,10 @@ - (MASViewAttribute *)mas_centerY {
}
- (MASViewAttribute *)mas_baseline {
- return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeBaseline];
+ return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeLastBaseline];
}
-- (MASViewAttribute *(^)(NSLayoutAttribute))mas_attribute
-{
+- (MASViewAttribute * (^)(NSLayoutAttribute))mas_attribute {
return ^(NSLayoutAttribute attr) {
return [[MASViewAttribute alloc] initWithView:self layoutAttribute:attr];
};
@@ -186,20 +185,15 @@ - (void)setMas_key:(id)key {
#pragma mark - heirachy
-- (instancetype)mas_closestCommonSuperview:(MAS_VIEW *)view {
- MAS_VIEW *closestCommonSuperview = nil;
-
+- (__kindof MAS_VIEW *)mas_closestCommonSuperview:(MAS_VIEW *)view {
+ MAS_VIEW *closestCommonSuperview = self;
MAS_VIEW *secondViewSuperview = view;
- while (!closestCommonSuperview && secondViewSuperview) {
- MAS_VIEW *firstViewSuperview = self;
- while (!closestCommonSuperview && firstViewSuperview) {
- if (secondViewSuperview == firstViewSuperview) {
- closestCommonSuperview = secondViewSuperview;
- }
- firstViewSuperview = firstViewSuperview.superview;
- }
- secondViewSuperview = secondViewSuperview.superview;
+ // O(a+b)
+ while (closestCommonSuperview != secondViewSuperview) {
+ closestCommonSuperview = !closestCommonSuperview ? view : closestCommonSuperview.superview;
+ secondViewSuperview = !secondViewSuperview ? self : secondViewSuperview.superview;
}
+
return closestCommonSuperview;
}
diff --git a/Masonry/View+MASShorthandAdditions.h b/Masonry/View+MASShorthandAdditions.h
index 8e375ee3..ad9142d5 100644
--- a/Masonry/View+MASShorthandAdditions.h
+++ b/Masonry/View+MASShorthandAdditions.h
@@ -1,5 +1,5 @@
//
-// UIView+MASShorthandAdditions.h
+// View+MASShorthandAdditions.h
// Masonry
//
// Created by Jonas Budelmann on 22/07/13.
@@ -10,129 +10,65 @@
#ifdef MAS_SHORTHAND
+NS_ASSUME_NONNULL_BEGIN
+
/**
* Shorthand view additions without the 'mas_' prefixes,
* only enabled if MAS_SHORTHAND is defined
*/
@interface MAS_VIEW (MASShorthandAdditions)
-@property (nonatomic, strong, readonly) MASViewAttribute *left;
-@property (nonatomic, strong, readonly) MASViewAttribute *top;
-@property (nonatomic, strong, readonly) MASViewAttribute *right;
-@property (nonatomic, strong, readonly) MASViewAttribute *bottom;
-@property (nonatomic, strong, readonly) MASViewAttribute *leading;
-@property (nonatomic, strong, readonly) MASViewAttribute *trailing;
-@property (nonatomic, strong, readonly) MASViewAttribute *width;
-@property (nonatomic, strong, readonly) MASViewAttribute *height;
-@property (nonatomic, strong, readonly) MASViewAttribute *centerX;
-@property (nonatomic, strong, readonly) MASViewAttribute *centerY;
-@property (nonatomic, strong, readonly) MASViewAttribute *baseline;
-@property (nonatomic, strong, readonly) MASViewAttribute *(^attribute)(NSLayoutAttribute attr);
-
-@property (nonatomic, strong, readonly) MASViewAttribute *firstBaseline;
-@property (nonatomic, strong, readonly) MASViewAttribute *lastBaseline;
-
-#if TARGET_OS_IPHONE || TARGET_OS_TV
+@property (nonatomic, readonly) MASViewAttribute *left;
+@property (nonatomic, readonly) MASViewAttribute *top;
+@property (nonatomic, readonly) MASViewAttribute *right;
+@property (nonatomic, readonly) MASViewAttribute *bottom;
+@property (nonatomic, readonly) MASViewAttribute *leading;
+@property (nonatomic, readonly) MASViewAttribute *trailing;
+@property (nonatomic, readonly) MASViewAttribute *width;
+@property (nonatomic, readonly) MASViewAttribute *height;
+@property (nonatomic, readonly) MASViewAttribute *centerX;
+@property (nonatomic, readonly) MASViewAttribute *centerY;
+@property (nonatomic, readonly) MASViewAttribute *baseline;
-@property (nonatomic, strong, readonly) MASViewAttribute *leftMargin;
-@property (nonatomic, strong, readonly) MASViewAttribute *rightMargin;
-@property (nonatomic, strong, readonly) MASViewAttribute *topMargin;
-@property (nonatomic, strong, readonly) MASViewAttribute *bottomMargin;
-@property (nonatomic, strong, readonly) MASViewAttribute *leadingMargin;
-@property (nonatomic, strong, readonly) MASViewAttribute *trailingMargin;
-@property (nonatomic, strong, readonly) MASViewAttribute *centerXWithinMargins;
-@property (nonatomic, strong, readonly) MASViewAttribute *centerYWithinMargins;
+@property (nonatomic, copy, readonly) MASViewAttribute * (^attribute)(NSLayoutAttribute attr);
-#endif
+@property (nonatomic, readonly) MASViewAttribute *firstBaseline;
+@property (nonatomic, readonly) MASViewAttribute *lastBaseline;
#if TARGET_OS_IPHONE || TARGET_OS_TV
-@property (nonatomic, strong, readonly) MASViewAttribute *safeAreaLayoutGuideLeading NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *safeAreaLayoutGuideTrailing NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *safeAreaLayoutGuideLeft NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *safeAreaLayoutGuideRight NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *safeAreaLayoutGuideTop NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *safeAreaLayoutGuideBottom NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *safeAreaLayoutGuideWidth NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *safeAreaLayoutGuideHeight NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *safeAreaLayoutGuideCenterX NS_AVAILABLE_IOS(11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *safeAreaLayoutGuideCenterY NS_AVAILABLE_IOS(11.0);
+@property (nonatomic, readonly) MASViewAttribute *leftMargin;
+@property (nonatomic, readonly) MASViewAttribute *rightMargin;
+@property (nonatomic, readonly) MASViewAttribute *topMargin;
+@property (nonatomic, readonly) MASViewAttribute *bottomMargin;
+@property (nonatomic, readonly) MASViewAttribute *leadingMargin;
+@property (nonatomic, readonly) MASViewAttribute *trailingMargin;
+@property (nonatomic, readonly) MASViewAttribute *centerXWithinMargins;
+@property (nonatomic, readonly) MASViewAttribute *centerYWithinMargins;
#endif
-- (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block;
-- (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block;
-- (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block;
-
-@end
-
-#define MAS_ATTR_FORWARD(attr) \
-- (MASViewAttribute *)attr { \
- return [self mas_##attr]; \
-}
-
-#define MAS_ATTR_FORWARD_AVAILABLE(attr, available) \
-- (MASViewAttribute *)attr available { \
- return [self mas_##attr]; \
-}
-
-@implementation MAS_VIEW (MASShorthandAdditions)
-
-MAS_ATTR_FORWARD(top);
-MAS_ATTR_FORWARD(left);
-MAS_ATTR_FORWARD(bottom);
-MAS_ATTR_FORWARD(right);
-MAS_ATTR_FORWARD(leading);
-MAS_ATTR_FORWARD(trailing);
-MAS_ATTR_FORWARD(width);
-MAS_ATTR_FORWARD(height);
-MAS_ATTR_FORWARD(centerX);
-MAS_ATTR_FORWARD(centerY);
-MAS_ATTR_FORWARD(baseline);
-
-MAS_ATTR_FORWARD(firstBaseline);
-MAS_ATTR_FORWARD(lastBaseline);
-
#if TARGET_OS_IPHONE || TARGET_OS_TV
-MAS_ATTR_FORWARD(leftMargin);
-MAS_ATTR_FORWARD(rightMargin);
-MAS_ATTR_FORWARD(topMargin);
-MAS_ATTR_FORWARD(bottomMargin);
-MAS_ATTR_FORWARD(leadingMargin);
-MAS_ATTR_FORWARD(trailingMargin);
-MAS_ATTR_FORWARD(centerXWithinMargins);
-MAS_ATTR_FORWARD(centerYWithinMargins);
-
-MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideLeading, NS_AVAILABLE_IOS(11.0));
-MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideTrailing, NS_AVAILABLE_IOS(11.0));
-MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideLeft, NS_AVAILABLE_IOS(11.0));
-MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideRight, NS_AVAILABLE_IOS(11.0));
-MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideTop, NS_AVAILABLE_IOS(11.0));
-MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideBottom, NS_AVAILABLE_IOS(11.0));
-MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideWidth, NS_AVAILABLE_IOS(11.0));
-MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideHeight, NS_AVAILABLE_IOS(11.0));
-MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideCenterX, NS_AVAILABLE_IOS(11.0));
-MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideCenterY, NS_AVAILABLE_IOS(11.0));
+@property (nonatomic, readonly) MASViewAttribute *safeAreaLayoutGuideLeading API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *safeAreaLayoutGuideTrailing API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *safeAreaLayoutGuideLeft API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *safeAreaLayoutGuideRight API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *safeAreaLayoutGuideTop API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *safeAreaLayoutGuideBottom API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *safeAreaLayoutGuideWidth API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *safeAreaLayoutGuideHeight API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *safeAreaLayoutGuideCenterX API_AVAILABLE(ios(11.0));
+@property (nonatomic, readonly) MASViewAttribute *safeAreaLayoutGuideCenterY API_AVAILABLE(ios(11.0));
#endif
-- (MASViewAttribute *(^)(NSLayoutAttribute))attribute {
- return [self mas_attribute];
-}
-
-- (NSArray *)makeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *))block {
- return [self mas_makeConstraints:block];
-}
-
-- (NSArray *)updateConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *))block {
- return [self mas_updateConstraints:block];
-}
-
-- (NSArray *)remakeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *))block {
- return [self mas_remakeConstraints:block];
-}
+- (NSArray *)makeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
+- (NSArray *)updateConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
+- (NSArray *)remakeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *make))block;
@end
+NS_ASSUME_NONNULL_END
+
#endif
diff --git a/Masonry/View+MASShorthandAdditions.m b/Masonry/View+MASShorthandAdditions.m
new file mode 100644
index 00000000..b77a4b13
--- /dev/null
+++ b/Masonry/View+MASShorthandAdditions.m
@@ -0,0 +1,68 @@
+//
+// View+MASShorthandAdditions.m
+// Masonry
+//
+// Created by Jonas Budelmann on 22/07/13.
+// Copyright (c) 2013 Jonas Budelmann. All rights reserved.
+//
+
+#import "View+MASShorthandAdditions.h"
+
+@implementation MAS_VIEW (MASShorthandAdditions)
+
+MAS_ATTR_FORWARD(top);
+MAS_ATTR_FORWARD(left);
+MAS_ATTR_FORWARD(bottom);
+MAS_ATTR_FORWARD(right);
+MAS_ATTR_FORWARD(leading);
+MAS_ATTR_FORWARD(trailing);
+MAS_ATTR_FORWARD(width);
+MAS_ATTR_FORWARD(height);
+MAS_ATTR_FORWARD(centerX);
+MAS_ATTR_FORWARD(centerY);
+MAS_ATTR_FORWARD(baseline);
+
+MAS_ATTR_FORWARD(firstBaseline);
+MAS_ATTR_FORWARD(lastBaseline);
+
+#if TARGET_OS_IPHONE || TARGET_OS_TV
+
+MAS_ATTR_FORWARD(leftMargin);
+MAS_ATTR_FORWARD(rightMargin);
+MAS_ATTR_FORWARD(topMargin);
+MAS_ATTR_FORWARD(bottomMargin);
+MAS_ATTR_FORWARD(leadingMargin);
+MAS_ATTR_FORWARD(trailingMargin);
+MAS_ATTR_FORWARD(centerXWithinMargins);
+MAS_ATTR_FORWARD(centerYWithinMargins);
+
+MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideLeading, API_AVAILABLE(ios(11.0)));
+MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideTrailing, API_AVAILABLE(ios(11.0)));
+MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideLeft, API_AVAILABLE(ios(11.0)));
+MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideRight, API_AVAILABLE(ios(11.0)));
+MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideTop, API_AVAILABLE(ios(11.0)));
+MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideBottom, API_AVAILABLE(ios(11.0)));
+MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideWidth, API_AVAILABLE(ios(11.0)));
+MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideHeight, API_AVAILABLE(ios(11.0)));
+MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideCenterX, API_AVAILABLE(ios(11.0)));
+MAS_ATTR_FORWARD_AVAILABLE(safeAreaLayoutGuideCenterY, API_AVAILABLE(ios(11.0)));
+
+#endif
+
+- (MASViewAttribute * (^)(NSLayoutAttribute))attribute {
+ return [self mas_attribute];
+}
+
+- (NSArray *)makeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *))block {
+ return [self mas_makeConstraints:block];
+}
+
+- (NSArray *)updateConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *))block {
+ return [self mas_updateConstraints:block];
+}
+
+- (NSArray *)remakeConstraints:(void (NS_NOESCAPE^)(MASConstraintMaker *))block {
+ return [self mas_remakeConstraints:block];
+}
+
+@end
diff --git a/Masonry/ViewController+MASAdditions.h b/Masonry/ViewController+MASAdditions.h
index 564654af..6719bf19 100644
--- a/Masonry/ViewController+MASAdditions.h
+++ b/Masonry/ViewController+MASAdditions.h
@@ -1,5 +1,5 @@
//
-// UIViewController+MASAdditions.h
+// ViewController+MASAdditions.h
// Masonry
//
// Created by Craig Siemens on 2015-06-23.
@@ -12,18 +12,22 @@
#ifdef MAS_VIEW_CONTROLLER
+NS_ASSUME_NONNULL_BEGIN
+
@interface MAS_VIEW_CONTROLLER (MASAdditions)
/**
* following properties return a new MASViewAttribute with appropriate UILayoutGuide and NSLayoutAttribute
*/
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuide NS_DEPRECATED_IOS(8.0, 11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuide NS_DEPRECATED_IOS(8.0, 11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideTop NS_DEPRECATED_IOS(8.0, 11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideBottom NS_DEPRECATED_IOS(8.0, 11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideTop NS_DEPRECATED_IOS(8.0, 11.0);
-@property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideBottom NS_DEPRECATED_IOS(8.0, 11.0);
+@property (nonatomic, readonly) MASViewAttribute *mas_topLayoutGuide API_DEPRECATED("Use view.mas_safeAreaLayoutGuideTop instead of mas_topLayoutGuide", ios(8.0, 11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_bottomLayoutGuide API_DEPRECATED("Use view.mas_safeAreaLayoutGuideBottom instead of mas_bottomLayoutGuide", ios(8.0, 11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_topLayoutGuideTop API_DEPRECATED("Use view.mas_top instead of mas_topLayoutGuideTop", ios(8.0, 11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_topLayoutGuideBottom API_DEPRECATED("Use view.mas_safeAreaLayoutGuideTop instead of mas_topLayoutGuideBottom", ios(8.0, 11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_bottomLayoutGuideTop API_DEPRECATED("Use view.mas_safeAreaLayoutGuideBottom instead of mas_bottomLayoutGuideTop", ios(8.0, 11.0));
+@property (nonatomic, readonly) MASViewAttribute *mas_bottomLayoutGuideBottom API_DEPRECATED("Use view.mas_bottom instead of mas_bottomLayoutGuideBottom", ios(8.0, 11.0));
@end
+NS_ASSUME_NONNULL_END
+
#endif
diff --git a/Masonry/ViewController+MASAdditions.m b/Masonry/ViewController+MASAdditions.m
index 9d8d378c..6ff24e09 100644
--- a/Masonry/ViewController+MASAdditions.m
+++ b/Masonry/ViewController+MASAdditions.m
@@ -1,5 +1,5 @@
//
-// UIViewController+MASAdditions.m
+// ViewController+MASAdditions.m
// Masonry
//
// Created by Craig Siemens on 2015-06-23.
diff --git a/Package.swift b/Package.swift
new file mode 100644
index 00000000..e35135dd
--- /dev/null
+++ b/Package.swift
@@ -0,0 +1,29 @@
+// swift-tools-version:5.0
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+import PackageDescription
+
+let package = Package(
+ name: "Masonry",
+ platforms: [
+ .macOS(.v10_11),
+ .iOS(.v9),
+ .tvOS(.v9)
+ ],
+ products: [
+ // Products define the executables and libraries a package produces, and make them visible to other packages.
+ .library(
+ name: "Masonry",
+ targets: ["Masonry"])
+ ],
+ targets: [
+ // Targets are the basic building blocks of a package. A target can define a module or a test suite.
+ // Targets can depend on other targets in this package, and on products in packages this package depends on.
+ .target(
+ name: "Masonry",
+ path: ".",
+ exclude: ["Masonry/Info.plist"],
+ sources: ["Masonry"],
+ publicHeadersPath: "Masonry"
+ )
+ ]
+)
diff --git a/Podfile b/Podfile
index 8401730c..fc58ab0a 100644
--- a/Podfile
+++ b/Podfile
@@ -1,6 +1,6 @@
workspace 'Masonry'
-platform :ios, '8.0'
+platform :ios, '9.0'
project 'Examples/Masonry iOS Examples'
target 'Masonry iOS Examples' do
@@ -10,6 +10,7 @@ end
target 'Masonry iOS Tests' do
project 'Tests/Masonry Tests'
pod 'Expecta'
+ pod 'Masonry', :path => './'
end
target 'MasonryTestsLoader' do
diff --git a/Podfile.lock b/Podfile.lock
index eab7e76f..5a12e933 100644
--- a/Podfile.lock
+++ b/Podfile.lock
@@ -1,19 +1,23 @@
PODS:
- - Expecta (1.0.5)
- - Masonry (1.1.0)
+ - Expecta (1.0.6)
+ - Masonry (1.2.0)
DEPENDENCIES:
- Expecta
- Masonry (from `./`)
+SPEC REPOS:
+ trunk:
+ - Expecta
+
EXTERNAL SOURCES:
Masonry:
- :path: ./
+ :path: "./"
SPEC CHECKSUMS:
- Expecta: e1c022fcd33910b6be89c291d2775b3fe27a89fe
- Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
+ Expecta: 3b6bd90a64b9a1dcb0b70aa0e10a7f8f631667d5
+ Masonry: 96a3fe904efc19f534b3c48982db9f616613c590
-PODFILE CHECKSUM: a30c350a250a8af6afde1caabae52ede1d76714b
+PODFILE CHECKSUM: edc6e98a73a37366909dc5103723a76307aebb04
-COCOAPODS: 1.3.0.beta.2
+COCOAPODS: 1.10.1
diff --git a/Pods/Expecta/Expecta/EXPDefines.h b/Pods/Expecta/Expecta/EXPDefines.h
index 52af7219..f37f697f 100644
--- a/Pods/Expecta/Expecta/EXPDefines.h
+++ b/Pods/Expecta/Expecta/EXPDefines.h
@@ -9,9 +9,9 @@
#ifndef Expecta_EXPDefines_h
#define Expecta_EXPDefines_h
-typedef void (^EXPBasicBlock)();
-typedef id (^EXPIdBlock)();
-typedef BOOL (^EXPBoolBlock)();
-typedef NSString *(^EXPStringBlock)();
+typedef void (^EXPBasicBlock)(void);
+typedef id (^EXPIdBlock)(void);
+typedef BOOL (^EXPBoolBlock)(void);
+typedef NSString *(^EXPStringBlock)(void);
#endif
diff --git a/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m b/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m
index d294113f..597aeec4 100644
--- a/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m
+++ b/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m
@@ -4,12 +4,16 @@
EXPMatcherImplementationBegin(respondTo, (SEL expected)) {
BOOL actualIsNil = (actual == nil);
BOOL expectedIsNull = (expected == NULL);
-
+
prerequisite (^BOOL {
return !(actualIsNil || expectedIsNull);
});
match(^BOOL {
+ if ([actual respondsToSelector:@selector(instancesRespondToSelector:)] &&
+ [actual instancesRespondToSelector:expected]) {
+ return YES;
+ }
return [actual respondsToSelector:expected];
});
diff --git a/Pods/Expecta/README.md b/Pods/Expecta/README.md
index 19337075..afebcf25 100644
--- a/Pods/Expecta/README.md
+++ b/Pods/Expecta/README.md
@@ -1,13 +1,8 @@
-#Expecta
-
-[![Build Status](http://img.shields.io/travis/specta/expecta/master.svg?style=flat)](https://travis-ci.org/specta/expecta)
-[![Pod Version](http://img.shields.io/cocoapods/v/Expecta.svg?style=flat)](http://cocoadocs.org/docsets/Expecta/)
-[![Pod Platform](http://img.shields.io/cocoapods/p/Expecta.svg?style=flat)](http://cocoadocs.org/docsets/Expecta/)
-[![Pod License](http://img.shields.io/cocoapods/l/Expecta.svg?style=flat)](https://www.apache.org/licenses/LICENSE-2.0.html)
+# Expecta [![Build Status](http://img.shields.io/travis/specta/expecta/master.svg?style=flat)](https://travis-ci.org/specta/expecta) [![Pod Version](http://img.shields.io/cocoapods/v/Expecta.svg?style=flat)](http://cocoadocs.org/docsets/Expecta/)
A matcher framework for Objective-C and Cocoa.
-## Introduction
+## FEATURES
The main advantage of using Expecta over other matcher frameworks is that you do not have to specify the data types. Also, the syntax of Expecta matchers is much more readable and does not suffer from parenthesitis.
@@ -18,63 +13,10 @@ expect([bar isBar]).to.equal(YES);
expect(baz).to.equal(3.14159);
```
-Expecta is framework-agnostic: it works well with XCTest and XCTest-compatible test frameworks such as [Specta](http://github.com/petejkim/specta/).
-
-
-## Installation
-
-You can setup Expecta using [Carthage](https://github.com/Carthage/Carthage), [CocoaPods](http://github.com/CocoaPods/CocoaPods) or [completely manually](#setting-up-manually).
-
-### Carthage
-
-1. Add Expecta to your project's `Cartfile.private`:
-
- ```ruby
- github "specta/expecta" "master"
- ```
-
-2. Run `carthage update` in your project directory.
-3. Drag the appropriate **Expecta.framework** for your platform (located in `Carthage/Build/`) into your application’s Xcode project, and add it to your test target(s).
-
-### CocoaPods
-
-1. Add Expecta to your project's `Podfile`:
-
- ```ruby
- target :MyApp do
- # Your app's dependencies
- end
-
- target :MyAppTests do
- pod 'Expecta', '~> 1.0.0'
- end
- ```
-
-2. Run `pod update` or `pod install` in your project directory.
-
-### Setting Up Manually
-
-1. Clone Expecta from Github.
-2. Run `rake` in your project directory to build the frameworks and libraries.
-3. Add a Cocoa or Cocoa Touch Unit Testing Bundle target to your Xcode project if you don't already have one.
-4. For **OS X projects**, copy and add `Expecta.framework` in the `Products/osx` folder to your project's test target.
-
- For **iOS projects**, copy and add `Expecta.framework` in the `Products/ios` folder to your project's test target.
-
- You can also use `libExpecta.a` if you prefer to link Expecta as a static library — iOS 7.x and below require this.
+Expecta is framework-agnostic: it works well with XCTest and XCTest-compatible test frameworks such as [Specta](http://github.com/petejkim/specta/), or [Kiwi](https://github.com/kiwi-bdd/Kiwi/).
-6. Add `-ObjC` and `-all_load` to the **Other Linker Flags** build setting for the test target in your Xcode project.
-7. You can now use Expecta in your test classes by adding the following import:
-
- ```objective-c
- @import Expecta; // If you're using Expecta.framework
-
- // OR
-
- #import // If you're using the static library, or the framework
- ```
-## Built-in Matchers
+## MATCHERS
> `expect(x).to.equal(y);` compares objects or primitives x and y and passes if they are identical (==) or equivalent isEqual:).
@@ -132,13 +74,13 @@ You can setup Expecta using [Carthage](https://github.com/Carthage/Carthage), [C
> `expect(x).to.match(y);` passes if an instance of NSString `x` matches regular expression (given as NSString) `y` one or more times.
-## Inverting Matchers
+### Inverting Matchers
Every matcher's criteria can be inverted by prepending `.notTo` or `.toNot`:
>`expect(x).notTo.equal(y);` compares objects or primitives x and y and passes if they are *not* equivalent.
-## Asynchronous Testing
+### Asynchronous Testing
Every matcher can be made to perform asynchronous testing by prepending `.will`, `.willNot` or `after(...)`:
@@ -172,14 +114,14 @@ describe(@"Foo", ^{
});
```
-## Forced Failing
+### Forced Failing
You can fail a test by using the `failure` attribute. This can be used to test branching.
> `failure(@"This should not happen");` outright fails a test.
-## Writing New Matchers
+### WRITING NEW MATCHERS
Writing a new matcher is easy with special macros provided by Expecta. Take a look at how `.beKindOf()` matcher is defined:
@@ -246,7 +188,7 @@ EXPMatcherImplementationBegin(beKindOf, (Class expected)) {
EXPMatcherImplementationEnd
```
-## Dynamic Predicate Matchers
+## DYNAMIC PREDICATE MATCHERS
It is possible to add predicate matchers by simply defining the matcher interface, with the matcher implementation being handled at runtime by delegating to the predicate method on your object.
@@ -282,6 +224,68 @@ You can now write your assertion as follows:
expect(lightSwitch).isTurnedOn();
```
+## INSTALLATION
+
+You can setup Expecta using [CocoaPods](http://github.com/CocoaPods/CocoaPods), [Carthage](https://github.com/Carthage/Carthage) or [completely manually](#setting-up-manually).
+
+### CocoaPods
+
+1. Add Expecta to your project's `Podfile`:
+
+```ruby
+target :MyApp do
+# your app dependencies
+
+ target :MyAppTests do
+ inherit! search_paths
+
+ pod 'Expecta', '~> 1.0'
+ end
+end
+```
+
+### Carthage
+
+1. Add Expecta to your project's `Cartfile.private`:
+
+ ```ruby
+ github "specta/expecta" "master"
+ ```
+
+2. Run `carthage update` in your project directory.
+3. Drag the appropriate **Expecta.framework** for your platform (located in `Carthage/Build/`) into your application’s Xcode project, and add it to your test target(s).
+
+
+2. Run `pod update` or `pod install` in your project directory.
+
+### Setting Up Manually
+
+1. Clone Expecta from Github.
+2. Run `rake` in your project directory to build the frameworks and libraries.
+3. Add a Cocoa or Cocoa Touch Unit Testing Bundle target to your Xcode project if you don't already have one.
+4. For **OS X projects**, copy and add `Expecta.framework` in the `Products/osx` folder to your project's test target.
+
+ For **iOS projects**, copy and add `Expecta.framework` in the `Products/ios` folder to your project's test target.
+
+ You can also use `libExpecta.a` if you prefer to link Expecta as a static library — iOS 7.x and below require this.
+
+6. Add `-ObjC` and `-all_load` to the **Other Linker Flags** build setting for the test target in your Xcode project.
+7. You can now use Expecta in your test classes by adding the following import:
+
+ ```objective-c
+ @import Expecta; // If you're using Expecta.framework
+
+ // OR
+
+ #import // If you're using the static library, or the framework
+ ```
+
+## STATUS
+
+Expecta, and Specta are considered done projects, there are no plans for _active_ development on the project at the moment aside from ensuring future Xcode compatability.
+Therefore it is a stable dependency, but will not be moving into the Swift world. If you are looking for that, we recommend you consider [Quick](https://github.com/quick/quick) and [Nimble](https://github.com/quick/nimble).
+
+
## Contribution Guidelines
* Please use only spaces and indent 2 spaces at a time.
@@ -290,4 +294,4 @@ expect(lightSwitch).isTurnedOn();
## License
-Copyright (c) 2012-2015 [Specta Team](https://github.com/specta?tab=members). This software is licensed under the [MIT License](http://github.com/specta/specta/raw/master/LICENSE).
+Copyright (c) 2012-2016 [Specta Team](https://github.com/specta?tab=members). This software is licensed under the [MIT License](http://github.com/specta/specta/raw/master/LICENSE).
diff --git a/Pods/Headers/Private/Masonry/LayoutGuide+MASAdditions.h b/Pods/Headers/Private/Masonry/LayoutGuide+MASAdditions.h
new file mode 120000
index 00000000..915d77ab
--- /dev/null
+++ b/Pods/Headers/Private/Masonry/LayoutGuide+MASAdditions.h
@@ -0,0 +1 @@
+../../../../Masonry/LayoutGuide+MASAdditions.h
\ No newline at end of file
diff --git a/Pods/Headers/Private/Masonry/LayoutGuide+MASShorthandAdditions.h b/Pods/Headers/Private/Masonry/LayoutGuide+MASShorthandAdditions.h
new file mode 120000
index 00000000..ace83e5d
--- /dev/null
+++ b/Pods/Headers/Private/Masonry/LayoutGuide+MASShorthandAdditions.h
@@ -0,0 +1 @@
+../../../../Masonry/LayoutGuide+MASShorthandAdditions.h
\ No newline at end of file
diff --git a/Pods/Headers/Public/Masonry/LayoutGuide+MASAdditions.h b/Pods/Headers/Public/Masonry/LayoutGuide+MASAdditions.h
new file mode 120000
index 00000000..915d77ab
--- /dev/null
+++ b/Pods/Headers/Public/Masonry/LayoutGuide+MASAdditions.h
@@ -0,0 +1 @@
+../../../../Masonry/LayoutGuide+MASAdditions.h
\ No newline at end of file
diff --git a/Pods/Headers/Public/Masonry/LayoutGuide+MASShorthandAdditions.h b/Pods/Headers/Public/Masonry/LayoutGuide+MASShorthandAdditions.h
new file mode 120000
index 00000000..ace83e5d
--- /dev/null
+++ b/Pods/Headers/Public/Masonry/LayoutGuide+MASShorthandAdditions.h
@@ -0,0 +1 @@
+../../../../Masonry/LayoutGuide+MASShorthandAdditions.h
\ No newline at end of file
diff --git a/Pods/Headers/Public/Masonry/MASConstraint+Private.h b/Pods/Headers/Public/Masonry/MASConstraint+Private.h
deleted file mode 120000
index a3ab1976..00000000
--- a/Pods/Headers/Public/Masonry/MASConstraint+Private.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../../Masonry/MASConstraint+Private.h
\ No newline at end of file
diff --git a/Pods/Local Podspecs/Masonry.podspec.json b/Pods/Local Podspecs/Masonry.podspec.json
index 760af7d5..a1cc0d0e 100644
--- a/Pods/Local Podspecs/Masonry.podspec.json
+++ b/Pods/Local Podspecs/Masonry.podspec.json
@@ -1,41 +1,25 @@
{
"name": "Masonry",
- "version": "1.1.0",
+ "version": "1.2.0",
"license": "MIT",
"summary": "Harness the power of Auto Layout NSLayoutConstraints with a simplified, chainable and expressive syntax.",
- "homepage": "https://github.com/cloudkite/Masonry",
+ "homepage": "https://github.com/SnapKit/Masonry",
"authors": {
"Jonas Budelmann": "jonas.budelmann@gmail.com"
},
"social_media_url": "http://twitter.com/cloudkite",
"source": {
- "git": "https://github.com/cloudkite/Masonry.git",
- "tag": "v1.1.0"
+ "git": "https://github.com/SnapKit/Masonry.git",
+ "tag": "v1.2.0"
},
- "description": "Masonry is a light-weight layout framework which wraps AutoLayout with a nicer syntax.\nMasonry has its own layout DSL which provides a chainable way of describing your\nNSLayoutConstraints which results in layout code which is more concise and readable.\n Masonry supports iOS and Mac OSX.",
+ "description": "Masonry is a light-weight layout framework which wraps AutoLayout with a nicer syntax.\nMasonry has its own layout DSL which provides a chainable way of describing your\nNSLayoutConstraints which results in layout code which is more concise and readable.\n Masonry supports iOS and Mac OSX.",
"source_files": "Masonry/*.{h,m}",
- "ios": {
- "frameworks": [
- "Foundation",
- "UIKit"
- ]
- },
- "tvos": {
- "frameworks": [
- "Foundation",
- "UIKit"
- ]
- },
- "osx": {
- "frameworks": [
- "Foundation",
- "AppKit"
- ]
- },
+ "private_header_files": "Masonry/MASConstraint+Private.h",
"platforms": {
- "ios": "6.0",
- "osx": "10.7",
+ "ios": "9.0",
+ "osx": "10.11",
"tvos": "9.0"
},
- "requires_arc": true
+ "requires_arc": true,
+ "static_framework": true
}
diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock
index eab7e76f..5a12e933 100644
--- a/Pods/Manifest.lock
+++ b/Pods/Manifest.lock
@@ -1,19 +1,23 @@
PODS:
- - Expecta (1.0.5)
- - Masonry (1.1.0)
+ - Expecta (1.0.6)
+ - Masonry (1.2.0)
DEPENDENCIES:
- Expecta
- Masonry (from `./`)
+SPEC REPOS:
+ trunk:
+ - Expecta
+
EXTERNAL SOURCES:
Masonry:
- :path: ./
+ :path: "./"
SPEC CHECKSUMS:
- Expecta: e1c022fcd33910b6be89c291d2775b3fe27a89fe
- Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
+ Expecta: 3b6bd90a64b9a1dcb0b70aa0e10a7f8f631667d5
+ Masonry: 96a3fe904efc19f534b3c48982db9f616613c590
-PODFILE CHECKSUM: a30c350a250a8af6afde1caabae52ede1d76714b
+PODFILE CHECKSUM: edc6e98a73a37366909dc5103723a76307aebb04
-COCOAPODS: 1.3.0.beta.2
+COCOAPODS: 1.10.1
diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj
index c8654693..7ee0b8a1 100644
--- a/Pods/Pods.xcodeproj/project.pbxproj
+++ b/Pods/Pods.xcodeproj/project.pbxproj
@@ -7,784 +7,813 @@
objects = {
/* Begin PBXBuildFile section */
- 0435080233FFD861A266AB43BE3279D3 /* EXPMatchers+beNil.m in Sources */ = {isa = PBXBuildFile; fileRef = 2251A125FE1F9EE61891B85AAAE71511 /* EXPMatchers+beNil.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 045E77138594FCD0492D74EE7C22AC90 /* EXPDoubleTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EBF9BAD2F54920E12BA8D79EB3EE01C /* EXPDoubleTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 067B3CDE5AAD4D941172A17C9EEA5916 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AF06A246FC5C7C1E779C3BFB883040C /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 07B309A8727E5DBE05DB1F644F7B8D8A /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A54ADC5F5885AE49835C21390D7B42C /* MASViewConstraint.m */; };
- 0B3330DD885757A45805E83A69E7AFFD /* EXPBlockDefinedMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 55CDC4616612ED7AA50A3E836E82B6BE /* EXPBlockDefinedMatcher.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 0CD876A643FA00F42565F0B4CFE5C360 /* Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 50660A3CB85C3AEC478DB2211E3CD76D /* Expecta.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 0D4B6D7C17953EF6C0BEFADA699DA6D2 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 194EE173246D25F2D7ED8C47FAF2ACF4 /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 0E8E7C035F8969CF3DC93E5490A6158B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE147446A1225BA68EA82615B1436CC1 /* Foundation.framework */; };
- 0F7BD72B0882E4D4DD27C3B914EC3857 /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A28546AD6B1C73C384E28625120AED5 /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 0FE4C580D709657792E5661E74F171D5 /* EXPMatchers+match.m in Sources */ = {isa = PBXBuildFile; fileRef = 10F25824C22E66EAFBAA5C0F62629D84 /* EXPMatchers+match.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 119C10C9E57E10B254B8B13A06D332F4 /* EXPMatchers+raise.h in Headers */ = {isa = PBXBuildFile; fileRef = 10F0627165FE862DA384F755B45FD6A7 /* EXPMatchers+raise.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 11B98D7660EAD3B22A6F8DAFAC8E96F8 /* EXPMatchers+haveCountOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 75992ED787187D30BE4B5F69BEF5EE30 /* EXPMatchers+haveCountOf.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 120A345233C900C50BAD6F3950FAB8FA /* NSValue+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 82F3CFD18ABD64DD8E88230EE43D854A /* NSValue+Expecta.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 12ADCD5E7598997A3486E62E784DB241 /* EXPMatchers.h in Headers */ = {isa = PBXBuildFile; fileRef = 61A4675B57359AB9653085CE195438A0 /* EXPMatchers.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 19CDE56AC4388C284D9A394F64E0530C /* EXPMatchers+beNil.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D20E91754698E478D6D3E468D5EC2C8 /* EXPMatchers+beNil.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 1AF47B7901796231A318934C2F0DDC04 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = DBCE4AE4A77A457256CB505688569B23 /* MASLayoutConstraint.m */; };
- 1C74D210067A2D584AA672E61F246ECC /* EXPExpect.m in Sources */ = {isa = PBXBuildFile; fileRef = CBEA9FE72B61C2E594B205165A09ECA7 /* EXPExpect.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 1D622FBC8A4262E6B398F5CCCB1D9650 /* EXPMatchers+raiseWithReason.m in Sources */ = {isa = PBXBuildFile; fileRef = 228937A58D5E1EF34C595366A42C018E /* EXPMatchers+raiseWithReason.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 1E2343F7AE04C5D386CCD455E84F13E0 /* EXPMatchers+beTruthy.m in Sources */ = {isa = PBXBuildFile; fileRef = 56B7202FE09B3976D80FD78EF63258F6 /* EXPMatchers+beTruthy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 1F002B6CD1662BADA6556D76FFFE0B96 /* Pods-Masonry iOS Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5478FCE860D549499E9B142210C4E612 /* Pods-Masonry iOS Tests-dummy.m */; };
- 24FF4A3B66A2F383BA14790790108406 /* EXPMatchers+haveCountOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 663B481626C7E7C19A7A42120FFC0E77 /* EXPMatchers+haveCountOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 2523657BEE249A532CDFD495AC911F39 /* EXPMatchers+beLessThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B14D8EAF812AD82BC8BA17C3DE5B573 /* EXPMatchers+beLessThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 28BC58EE3C7374C4C2DEF6D029011C84 /* EXPMatchers+beInTheRangeOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B014C13318B98A27EB6C15EB341678A /* EXPMatchers+beInTheRangeOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 28DD12DAF70F49B558112AA5E2809F19 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D2BB147FD43518883D32412C882B443 /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 2C8FBF03AD0FD40587A84D2994D758B4 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 01B7B1098F825865196B739BF9E36C04 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 2C944499E3BB44E17E10959A76BBAEA3 /* EXPMatchers+beGreaterThan.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B09BEB8A5DCEEF709CBA1F5CEE0B3B /* EXPMatchers+beGreaterThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 2D814705CE041C701138BD9147CB21AA /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = AEEF83956F9DBD675F4C2EF46B690567 /* MASConstraint.m */; };
- 31D27BF6DE823F040465EEC46431E22E /* EXPExpect.h in Headers */ = {isa = PBXBuildFile; fileRef = 7735CC4570D0C643EF99240D43284C4A /* EXPExpect.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 38B02E0B37B1F0225FBE396BD51461D9 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F83FB50741120EF2F5F9723A76C9099 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 391226D83570CA724B533A2C609A5EF5 /* EXPMatchers+beSupersetOf.m in Sources */ = {isa = PBXBuildFile; fileRef = DD2917440B958D545CC2EE8F2240D37E /* EXPMatchers+beSupersetOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 3AB6F716B6B591E90D2E2CB1434B55BB /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 593CB40473F1E441BC65F0044379DA72 /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 3E2C9C19590011C8FE1F3966F4AF52D5 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 48FB054B1F997F66CA0E17DB3B26223C /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 409B7E241957B5C0ADFA4DEA82CDA7AB /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 02DA3844CF514753E9CC1AE66A762D26 /* View+MASAdditions.m */; };
- 42FA711D0BA099127544F7A978075C9D /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = AE58747F7ED5EE1564AC83C82F3C9DEA /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 47E018E82EA7801C93BE8D632FBAA3EC /* EXPMatchers+beCloseTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FD8638DC7137054523DFDCD37576559 /* EXPMatchers+beCloseTo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 4943F7D828D56A874ACCA7AC312F863B /* EXPMatchers+beCloseTo.m in Sources */ = {isa = PBXBuildFile; fileRef = C3EDF7B170EC221838CC2A773B0CDC59 /* EXPMatchers+beCloseTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 4B76A75E1FA371E7EF6C821CD52514A1 /* EXPMatchers+equal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8780C4CC76E68DD8EA97F0E4B3287D64 /* EXPMatchers+equal.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 4C2D57EF131B9A1AA1A65F36DA717BC7 /* EXPMatchers+beSubclassOf.h in Headers */ = {isa = PBXBuildFile; fileRef = CBFE4C2A8558AE9FF24FCA67343113E2 /* EXPMatchers+beSubclassOf.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 4E89738B989CA5A6018187E52FE0E216 /* EXPMatchers+raiseWithReason.h in Headers */ = {isa = PBXBuildFile; fileRef = 13852BA59629381181212D4693F5CEC8 /* EXPMatchers+raiseWithReason.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 4EB308BF802E6F21BABDA8B8718CC7AB /* NSValue+Expecta.m in Sources */ = {isa = PBXBuildFile; fileRef = ADBF0443B4181A4D41268AB9F62AA73C /* NSValue+Expecta.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 4F51EE6366844B6C34DD13F77D9A76CA /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B80588779A2286A5E054DE4D0DDC03A /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 4FE0FA38EA4BC9922DB982A2FB4B504A /* EXPMatchers+endWith.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EEECBC2AC825C5498273AB762F561EF /* EXPMatchers+endWith.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 58E38027B0A4F6CA7BE54F0AE8D4885B /* EXPMatchers+conformTo.m in Sources */ = {isa = PBXBuildFile; fileRef = C565C77B7F3AC98E871994970653A958 /* EXPMatchers+conformTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 5D50DA13C7A8B2AF549AA4F05E69F9F4 /* EXPMatchers+respondTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9616A699420336DD8F227A5C41E36432 /* EXPMatchers+respondTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 5EB8C17604A5FCA7B0F9174850D0441F /* EXPMatchers+beginWith.h in Headers */ = {isa = PBXBuildFile; fileRef = 49E1D663D9B2CCDFFC739982A06D57C5 /* EXPMatchers+beginWith.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 61E89F8C6D2C5658ECADCC9BE04E4E0F /* EXPMatchers+beFalsy.h in Headers */ = {isa = PBXBuildFile; fileRef = 481E644C11C98774BE98309BA0A2CB6C /* EXPMatchers+beFalsy.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 6209E20926D79222E59F58B962BFAA1E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DDF04AEFCC4B011565BFFBFFF52B2FCE /* UIKit.framework */; };
- 62A200B73B76F6740A3EEA168FBFFF41 /* EXPMatchers+match.h in Headers */ = {isa = PBXBuildFile; fileRef = 88907F8AEA4C9B20AEB63E2047F54502 /* EXPMatchers+match.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 63CDCCAC82CBC33021220531D93213A2 /* EXPMatcherHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BD870522AC013353A13269A9CDEA664 /* EXPMatcherHelpers.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 643DE0287F1066D083368EAC928DF078 /* EXPFloatTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EEA345137E6F1B86DEC1ECEA04BEBD5 /* EXPFloatTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 660BEA8AC93BC6DF29A73D1570C10120 /* ExpectaSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 80708E2496B3C69452E559E575CD1D47 /* ExpectaSupport.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 69DCF5F3A96B49720B728BA6EF5E095A /* NSObject+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = C0F0C9DE4D36C0025D1A49B0106644A4 /* NSObject+Expecta.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 6DA9AB53FE1CA890DF5FB0468FA0F476 /* Pods-Masonry iOS Examples-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2DF08BADAA0D595D88E9A5F2F4AE8F /* Pods-Masonry iOS Examples-dummy.m */; };
- 7100640F169A4EC93CA15F0D8B5AFE8F /* EXPMatchers+beIdenticalTo.h in Headers */ = {isa = PBXBuildFile; fileRef = C98931A95CEDDC4098458BEB8FF864ED /* EXPMatchers+beIdenticalTo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 71FBC2F8907E29EB767026E6A08F7EEF /* EXPMatchers+beSubclassOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 98AFDA78C0BA149C8976CF3889419AA7 /* EXPMatchers+beSubclassOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 76A58C6131A1264FDE3DADAEA0AC83F5 /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = E66C1687519434878576CA9CA479B868 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 76FFE0A5253E08250D976CAE912B89D9 /* EXPMatchers+beSupersetOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F3869A1E846595FC8A567E9EF91600E /* EXPMatchers+beSupersetOf.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 7A50398D1D6F1D22165ECAA192F9D1CF /* EXPMatchers+respondTo.h in Headers */ = {isa = PBXBuildFile; fileRef = D242BA4F2D8595007967657C3EBF92CE /* EXPMatchers+respondTo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 7C4FFAF7E7BD72B4775C2966898B3A83 /* EXPMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F3B66464C8F4DC1EDFFEA58A98F9B5C /* EXPMatcher.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 80408C0CF9D13D89E500446267DD0041 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 358E8501C72A8B4A191589A7570FCC15 /* NSLayoutConstraint+MASDebugAdditions.m */; };
- 863C5CC8F4698A0C85AB53C9B072D889 /* EXPMatchers+equal.m in Sources */ = {isa = PBXBuildFile; fileRef = BFE37A3BBF6AEB4B7163AAE1BD655CDD /* EXPMatchers+equal.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 87C087B7F1B93C2DD0B42A93B3E9D9C4 /* EXPMatchers+conformTo.h in Headers */ = {isa = PBXBuildFile; fileRef = E36B444420761FDAD709E0D161F812C1 /* EXPMatchers+conformTo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 885C2534832AF6B1DFA98FA19C4D9994 /* EXPMatchers+beKindOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F4C6FD0E96DEE3BA24A38BA86A2EE83 /* EXPMatchers+beKindOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- 8994485FB1398BF225377D4C109CA38B /* EXPMatchers+beKindOf.h in Headers */ = {isa = PBXBuildFile; fileRef = E1DAB7DBD1812988117194D50ACE07A0 /* EXPMatchers+beKindOf.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 94C94F986312F61D076591DBCEC07104 /* EXPMatchers+beInTheRangeOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 10904D53FD27FC7E59BF92201687D517 /* EXPMatchers+beInTheRangeOf.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 9F196561D7369053FA6D9FD4374E85B9 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F34293A1C0AD9FD7013D79B910FE7E5 /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; };
- A12B39559E464A1089E4389274973616 /* EXPMatchers+beLessThan.m in Sources */ = {isa = PBXBuildFile; fileRef = E4CFDB3889CFAC5E05497101D3F82C0A /* EXPMatchers+beLessThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- A193FB77C3606DE847937B79BD869F26 /* EXPMatchers+beTruthy.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AAF8809A7BBA8A694825848A7EF07D2 /* EXPMatchers+beTruthy.h */; settings = {ATTRIBUTES = (Public, ); }; };
- A5CB8C92268FCAC7B00F12EE55B43338 /* EXPMatchers+raise.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D1DE5A0855C3142FCDE4471717B4C92 /* EXPMatchers+raise.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- A8A60B0CEECC7D7C9D8CA6B2DC811C64 /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = BB267133DB0AAEF96D19D2085B85E06D /* MASViewAttribute.m */; };
- A904D2D6242F68CC3B959E2B0FC8B4F9 /* ExpectaObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C060BC1E7116BC87FA94B45087D771B /* ExpectaObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- AC80F28E4B250E6535484F5269566FF0 /* Pods-MasonryTestsLoader-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 40B4963257702BBD9CAF03BECB9D16F0 /* Pods-MasonryTestsLoader-dummy.m */; };
- AEEF0434A83EF5F1949252A8409F71DD /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CBE98CC00A3DD78FC850D713EB164BE /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; };
- AFD341AE846EE3D48F3832FB858FD31C /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3683CAB8F5A6384907767DF9817A4B09 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
- B1820A5E15F22942E386756A0473E808 /* EXPMatchers+beLessThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 122F547802BB911D1B9F0D52C33B568D /* EXPMatchers+beLessThanOrEqualTo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- B1964DABF421B8BA6BB9AB9E1CC0E387 /* EXPMatchers+beGreaterThan.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F04D682D92E0B2B40FCE8BE214BDA61 /* EXPMatchers+beGreaterThan.h */; settings = {ATTRIBUTES = (Public, ); }; };
- B241CF27E6B9D2DBC3236BDC1BDA5B69 /* EXPMatchers+postNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C5D45C77F469660C6D6155EA159784F /* EXPMatchers+postNotification.h */; settings = {ATTRIBUTES = (Public, ); }; };
- B2880B5D7D91AACFCEF345934CFEBA55 /* EXPMatchers+beInstanceOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C71CEC9EB6A0B127237D9BE7AAB6081 /* EXPMatchers+beInstanceOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- B66BCA2DD1043A4356B5286F346F8049 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 585243F6624B3378D0DA0CF280D9F8EA /* Masonry-dummy.m */; };
- B709C0890B67EB6C1AB9B9738CDBEEC6 /* EXPMatchers+beIdenticalTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 687D54A17077AB5A8B750650CACBF3B3 /* EXPMatchers+beIdenticalTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- B72D6F9CD6DCCF9339A269BC0CABA88C /* ExpectaObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 4730731B518BAFE15142AA613F01F2EB /* ExpectaObject.h */; settings = {ATTRIBUTES = (Public, ); }; };
- B7FB8C30C577D624F5E0B1FDB3E6CD8B /* EXPUnsupportedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F1DE5E5E11E91062A5DA859EDCE3C49 /* EXPUnsupportedObject.h */; settings = {ATTRIBUTES = (Public, ); }; };
- BAA98BF425D78B9F9FB405680EA0CB3D /* EXPMatchers+beLessThan.h in Headers */ = {isa = PBXBuildFile; fileRef = 8140BF73F39AA0E15893403B6B2DCD9D /* EXPMatchers+beLessThan.h */; settings = {ATTRIBUTES = (Public, ); }; };
- BB0E62892680D990AC167E4629F95062 /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 59623D6FE7CFF9076F3ACA8D492A0A1E /* EXPMatchers+beGreaterThanOrEqualTo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- C091203A57422574B3263D1E9BA53A87 /* ExpectaSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = D8A10F7BEA143532312B95447C5A5B7C /* ExpectaSupport.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- C498F24E736A80A0F6C440DBC33AF494 /* EXPMatchers+beFalsy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2547652506D61F49D4B0882ED6B64B16 /* EXPMatchers+beFalsy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- C64C4032827660F5ED12E425857BE673 /* EXPMatcherHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A3DE5BA9F1F1BFDC50FA062018A4FF9 /* EXPMatcherHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; };
- C670343470EAC260E60ABD463CC39E2D /* EXPMatchers+beginWith.m in Sources */ = {isa = PBXBuildFile; fileRef = 34177F23961DA5ABF45170FA2037F8C1 /* EXPMatchers+beginWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- CC995F4F36E9D6237AFC6F729364B867 /* EXPBlockDefinedMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 57E3007D6F08B4F287C35811E372C9D8 /* EXPBlockDefinedMatcher.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- CDA268F5B643324DD61A0E25BD4179ED /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C9A0D7E24E5DCE2B938FC4C4901B353 /* EXPMatchers+beGreaterThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- D2BD7E6904BDD20074AB5A8B04400EB2 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A30D7435201DE311E06A35CEA390581 /* ViewController+MASAdditions.m */; };
- D3B4D194BECF709DFA85E588891B885E /* EXPMatchers+contain.h in Headers */ = {isa = PBXBuildFile; fileRef = 44127DD3F6457EEB52F5B0B644C748E5 /* EXPMatchers+contain.h */; settings = {ATTRIBUTES = (Public, ); }; };
- D69C7F6B7677C82AABBF7FE0057CE931 /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = FC8A8F10966AF0D4BEF49EBF2CFF4C0C /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; };
- D904A66B88A11E0356D09C38CA20102D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE147446A1225BA68EA82615B1436CC1 /* Foundation.framework */; };
- D94F3CDE976C052BF0BD112E257A7F19 /* EXPMatchers+postNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 065A35D6EF149C4D848B49BAA59DAE1E /* EXPMatchers+postNotification.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- DBA55CF16CB958E3F3D38079F18EBC06 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE147446A1225BA68EA82615B1436CC1 /* Foundation.framework */; };
- DFFE7035A8177E14B29DE53973AE3B1E /* EXPMatchers+beInstanceOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B9D165EC173241B2C9EFF6FDB72491D /* EXPMatchers+beInstanceOf.h */; settings = {ATTRIBUTES = (Public, ); }; };
- E220D02AE7833F8B9202B0304FFBB644 /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 8524B32277BDB7E1A36FB5F3EB3BAC6B /* MASCompositeConstraint.m */; };
- E846C94664199B4B993866C557EEC20D /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A31938A554F154B402756FCBFE7167B /* NSArray+MASAdditions.m */; };
- E95DE019212836608A35BF3270AADF17 /* Expecta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D50A0454EC2ACA566EC1A84F70DBE96A /* Expecta-dummy.m */; };
- EBFA48D334098E6BAB801E6FB8F756C0 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = EB9E853361218FD2866DABF9A3E384D5 /* MASConstraintMaker.m */; };
- ED087996824EE3256B222E3BAEBAB14D /* EXPUnsupportedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 035F256E7A521234689F67B3EC887567 /* EXPUnsupportedObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- EE5A8DD4F03A890084772DA66DE9BE93 /* EXPDoubleTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = AEDF716CFA2F6ADA12E2C6D67EF8B2D2 /* EXPDoubleTuple.h */; settings = {ATTRIBUTES = (Public, ); }; };
- EFCF1E2468BC28069F92B4702B5DD463 /* EXPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F338BE8E88D6EB9496878863145B7C5 /* EXPDefines.h */; settings = {ATTRIBUTES = (Public, ); }; };
- F0B56A7D38A399A2F67F9920C9526A66 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE147446A1225BA68EA82615B1436CC1 /* Foundation.framework */; };
- F3D6C90DF502E4B6BFA4B4B950FB176B /* EXPFloatTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 63BB2BA348CAEB74A836E775BF8ABE2C /* EXPFloatTuple.h */; settings = {ATTRIBUTES = (Public, ); }; };
- F589CF64CC8ED22D9F37824176FBBB72 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE147446A1225BA68EA82615B1436CC1 /* Foundation.framework */; };
- F7B20B4187947E3B6B93F0457C239D0B /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2D9897D646E2BB9FBF73704C04440B2 /* XCTest.framework */; };
- F8E39087737225714939DB0252FB1114 /* EXPMatchers+endWith.m in Sources */ = {isa = PBXBuildFile; fileRef = B20D7BAA1D4E85394D4C0BCBCB2BF960 /* EXPMatchers+endWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- FE84239BE923F217FD38E45B4F770EFD /* EXPMatchers+contain.m in Sources */ = {isa = PBXBuildFile; fileRef = DB37BB623433F136572448D26D6FB70A /* EXPMatchers+contain.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 03A812302F4831B26EA5D4090B743A8E /* LayoutGuide+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B394FB6D49FAF7FAD8D13D36456DC71E /* LayoutGuide+MASAdditions.m */; };
+ 04DDC981AAD7F73EFDFD96393C227827 /* EXPUnsupportedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 4264D1B3E3017D85F1079D57BDF5A1D8 /* EXPUnsupportedObject.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 04E724A97339965ACA4E5D60226DA001 /* EXPMatchers+beIdenticalTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4448FECF990760A568B005012B766C32 /* EXPMatchers+beIdenticalTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 051D4B5709A6257B6F79D54D9139E812 /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 87B08263B34CC746FC1645359B11B5D3 /* EXPMatchers+beGreaterThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 07E5854E45B4F185DAE8FDC36C94EECE /* EXPMatchers+beLessThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 66DF1607BF8FFF84DD6639E94DE88378 /* EXPMatchers+beLessThanOrEqualTo.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 08972BEC745F3895C5FE98732BB0E646 /* EXPMatcherHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F988A27369666BDE47CDB2B6C809945 /* EXPMatcherHelpers.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 0E66A0F36DD725E82041A51F593EA534 /* EXPMatchers+conformTo.h in Headers */ = {isa = PBXBuildFile; fileRef = B0A615E519E5DEE91A404198AE2BFF8C /* EXPMatchers+conformTo.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 102AE0CDC0AFA43305803BE841A059DB /* NSArray+MASShorthandAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A32849E7FB9B4BC1FB808FC936C98713 /* NSArray+MASShorthandAdditions.m */; };
+ 1222560B913CB9C9C0D14221D02C8306 /* EXPMatchers+beTruthy.m in Sources */ = {isa = PBXBuildFile; fileRef = AD63EC1E37D24355FE834107F62FAF98 /* EXPMatchers+beTruthy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 1528461638FECB52FE7EE250B23806FA /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 8076E486DC7258AC955A834960FE452D /* MASUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 18BBFC91DC52B7E491AD40E884F99FA5 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 25615882305B886DDE423AE5E03DF5CB /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 1A4BC62A5EBA7F92D2074FFAADC4E6B5 /* Pods-Masonry iOS Examples-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E79AA722BC2B1C69DC4D0A106BFFC372 /* Pods-Masonry iOS Examples-dummy.m */; };
+ 1CE288226DA4D5164FDE93288F20616B /* EXPMatchers+beNil.m in Sources */ = {isa = PBXBuildFile; fileRef = B8ECC452F75A277850F64A0E33F274C5 /* EXPMatchers+beNil.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 21D97B29CD24881CDB275150FFACB46C /* EXPMatchers+raiseWithReason.h in Headers */ = {isa = PBXBuildFile; fileRef = 7340210602BDFD1CA8C7535091837F6C /* EXPMatchers+raiseWithReason.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 26E33CBCA823C72C51357582994E746C /* EXPMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B6580C52FB3F2F65EEF0CECF613374E /* EXPMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 276339BBEAE2F06F12EA19FF6BAA6F33 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 3967033705D28226FDBC02F4EF3D832D /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 2D5858A78F99A1196B5416C63B18F8AA /* EXPMatchers+haveCountOf.h in Headers */ = {isa = PBXBuildFile; fileRef = D11D1CDDEDFF327522CA54BE7DF33771 /* EXPMatchers+haveCountOf.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 306CE82B21363D3A2BE5791B0441F22C /* EXPMatchers+beKindOf.h in Headers */ = {isa = PBXBuildFile; fileRef = BD8B0206EA620497EDB7CAFA9EDC7B95 /* EXPMatchers+beKindOf.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 3160B54E02BA3F57402FD9D1864922C0 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E26DB36C1AA9C59E8967814F19171F5B /* NSArray+MASAdditions.m */; };
+ 32AB00AC549EAE7537CB60F40224320D /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 933C56887CDDDBE0D8B572C8C77FF0CA /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 32C47F4F9EC749FCBC28A4BCB3599A77 /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 30933C59CA21076A391BAAAB4AD2CD4C /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 3726CD36BF4080EE1145EC822AA6BF4C /* EXPMatchers+match.h in Headers */ = {isa = PBXBuildFile; fileRef = A2FFDEE02AC253C0F7D76BE7E3F32CAE /* EXPMatchers+match.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 3FB675C0E73B6F8058EA1467E1A33C16 /* EXPMatchers+conformTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 43A67C92FB8A7592CBCE09307DA01AF0 /* EXPMatchers+conformTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 43163FF5C47E1BAAC12E171C188302E1 /* EXPExpect.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D7E76599E0A16881905020078431451 /* EXPExpect.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 477C77170BBEBE5DA4591B9C45A375B4 /* EXPMatchers+postNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BF8087A416A7EB3F95BECB53A82AE7F /* EXPMatchers+postNotification.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 47BA6E07A9AEBBAD52E5F15A033C864A /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = DD81653C343E839304192B62BD84A4A1 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 4954A385199A818B177E146777CF37D6 /* EXPMatchers+beGreaterThan.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EAF619D343CBB1CF3B7401F31AEE720 /* EXPMatchers+beGreaterThan.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 4DEC4FC7A759ED6E40C6706E5E500543 /* EXPMatchers.h in Headers */ = {isa = PBXBuildFile; fileRef = E62CAE4ED2112AFC39C375049F2E74B8 /* EXPMatchers.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 4EBE6AD128FFDF53A3FD68082B37B051 /* LayoutGuide+MASShorthandAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = ECD13968D0CD6EACE4DCB09F9AFE00CF /* LayoutGuide+MASShorthandAdditions.m */; };
+ 506AEBBD21A6F1D89B5AA6D1EFA1C62B /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 02EEB3D513AE4127353434103F20DF7A /* View+MASAdditions.m */; };
+ 523CE30C095A2236A550FDB03991970C /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A5716C1E8A1774B13BE9A33DC8D68EE7 /* Masonry-dummy.m */; };
+ 527A1FD6FD79117C535D19213B9011D1 /* EXPMatcherHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = F0A3A42C3994852DE718F3A82885C4F9 /* EXPMatcherHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 55E5FF4DC5EEEC6B400A0D87E3193890 /* EXPMatchers+beInstanceOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 829FE3CD93FECE6DA8F960BECA7004DB /* EXPMatchers+beInstanceOf.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 57BA46DFE2F32F04F308289610F73EDD /* EXPMatchers+equal.h in Headers */ = {isa = PBXBuildFile; fileRef = 82027158F59D887F35B18901C0012EDE /* EXPMatchers+equal.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 5A43305F185AD6B24558485ACBAC13D3 /* EXPMatchers+beInstanceOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 769D2BD9A360398965D078254446EE92 /* EXPMatchers+beInstanceOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 5E6233C210A6AF47C79AC729CE57536E /* Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DB89D24ECB0566107D944096312C3FA /* Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 6214814A6B4ED5038353C2DE0F71DE04 /* EXPMatchers+beKindOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F3E3D128DE2E8B3AC4885CEE00FCD05 /* EXPMatchers+beKindOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 631AFE3D6BED4FE218ADBF212982DF60 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 1735ABCBAE67332541684FB30FE21FDF /* MASLayoutConstraint.m */; };
+ 6696CBE4654AD391C63CD4E85ACF2C97 /* EXPMatchers+beLessThan.h in Headers */ = {isa = PBXBuildFile; fileRef = CA4DCA67ABD5C5D5A881EECB095C616C /* EXPMatchers+beLessThan.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 69349BECD39FBA209D2ECA0AFE6550AE /* EXPMatchers+endWith.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EB461EE218697A6B792EE827934B5E0 /* EXPMatchers+endWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 6AB635E53472AFA729AD959EB18363B1 /* EXPMatchers+beFalsy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AA7AE2F6519C01A858AA56ADC6C0118 /* EXPMatchers+beFalsy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 6C2B1FA8BDF3452AD5C6E640AE95AA6C /* EXPDoubleTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = A10F1DEA5080C60C5317CFFF97E16F32 /* EXPDoubleTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 6D311E7FBE67BFDE9E812885324764C3 /* EXPFloatTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 4324340906222BC4D70B66CC607CE6EE /* EXPFloatTuple.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 7021D3AF25EC280F69E49EC9FBE59484 /* EXPMatchers+contain.h in Headers */ = {isa = PBXBuildFile; fileRef = 0414F8191399724707CC515B23938266 /* EXPMatchers+contain.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 70384A05DD64D46FE1E31969F1C4F88D /* EXPMatchers+beGreaterThan.m in Sources */ = {isa = PBXBuildFile; fileRef = 9EAC4DB7F4781EFDF9CAEE010CE316A9 /* EXPMatchers+beGreaterThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 71386C6E62CC5331AA1D008197CEF602 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 48110E19BBB54C5CA27DE1EBA62F7562 /* ViewController+MASAdditions.m */; };
+ 738B88E8018D3400546022C0A2641846 /* EXPMatchers+beNil.h in Headers */ = {isa = PBXBuildFile; fileRef = D3EC2F097AEE540C90EAC265773EDA85 /* EXPMatchers+beNil.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 73AC6EBD206F2AA9370C1032889C0861 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 10AA62639EDB09AE916B3DD8AAD36DC3 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 7C1632A83B80B163FAC5297F8E9576D1 /* EXPMatchers+beIdenticalTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 94E012777A2AE21B882A02354D0DF491 /* EXPMatchers+beIdenticalTo.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 7C6E59F6F0F3A29811C4CACC9928BECF /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = B0EE972E8F932B04E66E65DE82870717 /* MASConstraintMaker.m */; };
+ 7FD25AE74C165D37BB9909EF2026746C /* EXPMatchers+beginWith.m in Sources */ = {isa = PBXBuildFile; fileRef = C72BD4201E0FB72BE43A4CBBAE69E443 /* EXPMatchers+beginWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 80E371FE77A34E12BA35EE5C7EEC092C /* EXPMatchers+beLessThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = EB57A7C7BEF752029BE858DA4636F52D /* EXPMatchers+beLessThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 85F1E88FEEBF9B0337821E05C048AC39 /* EXPDoubleTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 40848C0C12BFC3FFF04BA34DE0CFEDE1 /* EXPDoubleTuple.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 8873174683E2EE234F3A3EB7A9B4F15D /* ExpectaSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 854B390E1F4E5BB07C6CFA25B7691D16 /* ExpectaSupport.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 8E971E2458163B8D717523B8D8BC892D /* EXPMatchers+match.m in Sources */ = {isa = PBXBuildFile; fileRef = A42A1FB895801BDD4E5B7B57B0A05104 /* EXPMatchers+match.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 8F5B10D2E6BD453C535653D36FFFE4BB /* NSObject+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = E1F40E1B3615FA57953ACE2F203E7197 /* NSObject+Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 94A899454728A627B3A09E219D11F90B /* NSValue+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = B5D8B3763578E6D0CC56EDAD33A2903A /* NSValue+Expecta.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ 9D96E887F3AF3FCB896F40F6167D03AF /* ExpectaObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 2287AC47D72FED8A0AFDC9B7EBE176EC /* ExpectaObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ 9DDE1BDD1C6207009250EDA6C41F0621 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = BBC072082F2C1B0D3CFDE03BBBCFD125 /* NSLayoutConstraint+MASDebugAdditions.m */; };
+ A12CFB59F38100C987161083B914187D /* EXPMatchers+beSubclassOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EDF2951F01474822E0E8F9EB76143A5 /* EXPMatchers+beSubclassOf.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ A157FC2DD0DD20D4214ABAF18EA92FD2 /* Pods-Masonry iOS Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A87D3A7AB8CCF25E87BFA76CAB7CAA8 /* Pods-Masonry iOS Tests-dummy.m */; };
+ A1FE1F032E5FC3DD14514274810CB920 /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A2355A7FF831E92E2450625F2701398 /* MASViewAttribute.m */; };
+ A26ADE1931856B9F72370EB470D145D7 /* EXPMatchers+beTruthy.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B6CD575CEFDAC7E72EFE1A907057FB9 /* EXPMatchers+beTruthy.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ A3E9D8D3FCC116B9977B4D9D15931763 /* EXPMatchers+beInTheRangeOf.m in Sources */ = {isa = PBXBuildFile; fileRef = AA05135B80F02BA708E584BE93EAE509 /* EXPMatchers+beInTheRangeOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ A51F7ECF32728036C3977EA073A559AD /* EXPBlockDefinedMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = B753A37B576884F5FADB6E1C7BEA5013 /* EXPBlockDefinedMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ A5D55782524E9DA98FB2CF6C28E84110 /* EXPMatchers+respondTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C9BFB46434107BF7B2A364929A9075F /* EXPMatchers+respondTo.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ A7AFF805552754168FE472102902BEE8 /* EXPExpect.h in Headers */ = {isa = PBXBuildFile; fileRef = 42A6E443D42C1EE234A2449E3F370942 /* EXPExpect.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ A90ED8FE67ED58BD5E6A858A359578EC /* View+MASShorthandAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 70EA2CAC52167DA57CEEEA6F37C6D3AD /* View+MASShorthandAdditions.m */; };
+ AA33310A145547AE371A726E9977CFA6 /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = B61415DCBA8E999175788DC91B459287 /* MASViewConstraint.m */; };
+ AD2CF66258C344DB8B748A7D7325059E /* EXPMatchers+endWith.h in Headers */ = {isa = PBXBuildFile; fileRef = F54F5DEC635206C3D85182A54CDFC024 /* EXPMatchers+endWith.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ AF4EEDDC8B4D37D4105C7AC3A571A6B3 /* EXPMatchers+postNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = B60F53F110FEC4A9658F125EC15D6948 /* EXPMatchers+postNotification.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ AFA0CA5DFE3673B8D2E37A2B3A4528BE /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F77CE96F3DAB41E69EE8BB9050E257F /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ B0010BBE7F27AA63239F8B31D4AB4366 /* EXPMatchers+beSupersetOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 803A15B8EC7FC56D120C016A7B89BBCC /* EXPMatchers+beSupersetOf.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ B353DEE0F707A17093B0D8A5F53894D9 /* Expecta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 37BB8D352222CE40BC119089DA9D26C1 /* Expecta-dummy.m */; };
+ B458BC2D677BFE2781CA179888E41364 /* EXPMatchers+beInTheRangeOf.h in Headers */ = {isa = PBXBuildFile; fileRef = AEEA81685BED00CA2D08644B3D992447 /* EXPMatchers+beInTheRangeOf.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ B5D629B65A97D9E8EF4D5BAA4F40C0FC /* EXPMatchers+beSubclassOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AD8B96FC6EA509C6208FBBD04895018 /* EXPMatchers+beSubclassOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ B6C36294D61D4423CC9B49A740BF688F /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 33D751850CDEDE02F7ABFACA6610FDC9 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ B7603387DF30944EE2AF64E8AFD9B996 /* EXPMatchers+beCloseTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 86F3DEAD3699B41D07009E64FE392FBF /* EXPMatchers+beCloseTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ B819BE48290A13E9CD053F018F294ED4 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 40510E8BC036FFDDF98EB28362EEFCEC /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ BCCC03AB3BEC74DAD5170A8441D9BBEC /* EXPFloatTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 541464FB5D516499DF0360723BD4BB7C /* EXPFloatTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ BD34E05A130785C83EE6C4CBD584F3DD /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 74DF6E1ECAB984700147F9BA24F206B3 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ BD769EA7F521A62B01BA7C52FBFE218B /* EXPMatchers+equal.m in Sources */ = {isa = PBXBuildFile; fileRef = 070DD0B5FF3AEC96294E28E7546898E3 /* EXPMatchers+equal.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ BED84F19DDD265A8DC03B3F4DFFEA254 /* EXPMatchers+beginWith.h in Headers */ = {isa = PBXBuildFile; fileRef = F1A2974DF0EE9CCF9D1F937EE0B0A041 /* EXPMatchers+beginWith.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ BF0E9FC2F301F77F02220AA076BE6443 /* EXPMatchers+beCloseTo.h in Headers */ = {isa = PBXBuildFile; fileRef = C216D527A6F209AB9AAD544000E63427 /* EXPMatchers+beCloseTo.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ BF9E3937CCFD78E7DBE3EF757C4B9093 /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 43836DE8E97F5392C276F30B8D7AD514 /* EXPMatchers+beGreaterThanOrEqualTo.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ C5ABCAD032D262081CC9D9A46F2315E4 /* EXPUnsupportedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EAC10A91468BFB1107398DCBD3671CB /* EXPUnsupportedObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ C8DDC08BD15D8DD739AE3CF79C5D7507 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4512CC9B9209948D1320D1A93879F65F /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ CAE8D9E60604DD9EEC6F00A0E01E0C4F /* EXPMatchers+contain.m in Sources */ = {isa = PBXBuildFile; fileRef = 6173CC31C10F0050D31733615599B090 /* EXPMatchers+contain.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ CE16D7663764375961128F92A95710F1 /* MASUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E8B1FF46411CDB71C0D319565D34343 /* MASUtilities.m */; };
+ CF56C02D0DA8F5E60905D7CBFC2828C3 /* LayoutGuide+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC4E206495C50DD1987B8C7829F6437 /* LayoutGuide+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ D1BF0D14765A5F2B82A53A58E7912DF5 /* EXPMatchers+respondTo.m in Sources */ = {isa = PBXBuildFile; fileRef = F5A15DDD5B56508596B637D37E7CF067 /* EXPMatchers+respondTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ D33C600E6B5E582C65F3EF397CAD3338 /* EXPMatchers+raise.m in Sources */ = {isa = PBXBuildFile; fileRef = 4208F20FBB51E24C0035B0A9043519E5 /* EXPMatchers+raise.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ D8A570B2BE3BD8D7BB992CCE3FC27319 /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A49105F3076B160126FA5F97C1C3C12 /* MASCompositeConstraint.m */; };
+ D8E614EDAA6E90ACCD4020CDEF64FB08 /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = 28F25B1BD3C8C2239E421AF5DBAFFCC3 /* Masonry.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ DA7B989AFE2B409E9EF6BF04120B8C13 /* EXPBlockDefinedMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = E4BE7BE136208AF771E88F33DCD45DC8 /* EXPBlockDefinedMatcher.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ DFAAA5ED8680564064326FAFC53E3482 /* Pods-MasonryTestsLoader-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 299ABE997F6723183C584B121F94415E /* Pods-MasonryTestsLoader-dummy.m */; };
+ DFEEB75EA1B2172C382FA8594ADA0241 /* EXPMatchers+beLessThan.m in Sources */ = {isa = PBXBuildFile; fileRef = C97DDB1DE18EFF1E352D2C15B2A9BC33 /* EXPMatchers+beLessThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ E3E4EB4224D8C15DFC67F4FD3EF34E32 /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 741EDD04C8E9AC9B3074B26C300957A9 /* MASConstraint.m */; };
+ E8AD769E477F1E7FADE2326F433ADB12 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B04567735EB424B8830838CCDDFB6B7 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ EA7CCE29307048D044A60D1F8D63D87A /* EXPMatchers+raise.h in Headers */ = {isa = PBXBuildFile; fileRef = 86C3D20E3852E93A705B38C87D44CF25 /* EXPMatchers+raise.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ EE62D51B4F4A55731CCD546D25BA1064 /* NSValue+Expecta.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B4B8CBF384D897E9FDA56292461EF02 /* NSValue+Expecta.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ EED4D51267517F2D304C74540B6B0489 /* ExpectaSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = B0E3BFA20A42FAD25CBAA12003D88EA2 /* ExpectaSupport.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ EF07E681556BC7689CCED3B38434F00E /* EXPMatchers+haveCountOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EA666C2D9E5F656BFCC3EB1E1DFC5F8 /* EXPMatchers+haveCountOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ F3D79EE95A53DC322C2F93551780FCC4 /* ExpectaObject.h in Headers */ = {isa = PBXBuildFile; fileRef = B1E0F64D4FE0CE118C570076A9506D57 /* ExpectaObject.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ F74BF06DBC15BB2A17E66943831132C2 /* EXPMatchers+beSupersetOf.m in Sources */ = {isa = PBXBuildFile; fileRef = A7A3D8587BC6DAB7EA6E4A343B23FBE2 /* EXPMatchers+beSupersetOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ F7A9F53A68FF24600778D518BCD448F1 /* EXPMatchers+beFalsy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B010F85FB7805073FD3A073341E97E2 /* EXPMatchers+beFalsy.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ F7B19B68FAB73CB0732744B6A096D791 /* EXPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 097C9C9334A54D561D4D91899DC6D0F5 /* EXPDefines.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ F9E1C0898609C045246BD0E0C93E26B0 /* LayoutGuide+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = C487CB8F7B662AD21FB0ACDD409248EB /* LayoutGuide+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ FAEC9B002AB74B29D9A108A1ECC67056 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = A1364BD8BFB3079E8AF6C124BC50E889 /* MASConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; };
+ FC03EE048F70F1E14A2F78836CA26D49 /* EXPMatchers+raiseWithReason.m in Sources */ = {isa = PBXBuildFile; fileRef = B87562C8906C880E0B994BB48202735B /* EXPMatchers+raiseWithReason.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
- 3A31C048AC5B5E5AB145E49BF610B911 /* PBXContainerItemProxy */ = {
+ 72CE870760A45916E07816B4B7324986 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
- containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
proxyType = 1;
- remoteGlobalIDString = 46D68D26DCAAC4D999D549BA45F0B0EC;
- remoteInfo = Expecta;
+ remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E;
+ remoteInfo = Masonry;
};
- 5E51BB7C485C3BB1001A7E9EF94414CF /* PBXContainerItemProxy */ = {
+ B75A0CE47F1335ADF22BFFE2CE4BC651 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
- containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
proxyType = 1;
- remoteGlobalIDString = 9DC8D9E02903E93BD0B2FEC9D846EA20;
+ remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E;
remoteInfo = Masonry;
};
- AA5F0BBF6F9F116C791133368DE92755 /* PBXContainerItemProxy */ = {
+ C5E151CE4DDEA5E3770EDA456DE348CA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
- containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
proxyType = 1;
- remoteGlobalIDString = 9DC8D9E02903E93BD0B2FEC9D846EA20;
+ remoteGlobalIDString = DC371B7477C88184274EC6710690F97C;
+ remoteInfo = Expecta;
+ };
+ D561D18B09F2A99E2E81DEC613CFDE0B /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E;
remoteInfo = Masonry;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
- 01B7B1098F825865196B739BF9E36C04 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSArray+MASAdditions.h"; sourceTree = ""; };
- 02DA3844CF514753E9CC1AE66A762D26 /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "View+MASAdditions.m"; sourceTree = ""; };
- 0341D10523364E42D0E6F9935E3DA6DE /* Pods-Masonry iOS Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Masonry iOS Tests-frameworks.sh"; sourceTree = ""; };
- 035F256E7A521234689F67B3EC887567 /* EXPUnsupportedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPUnsupportedObject.m; path = Expecta/EXPUnsupportedObject.m; sourceTree = ""; };
- 065A35D6EF149C4D848B49BAA59DAE1E /* EXPMatchers+postNotification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+postNotification.m"; path = "Expecta/Matchers/EXPMatchers+postNotification.m"; sourceTree = ""; };
- 0792517CDD83AC956FA10DA378F7C590 /* Pods-MasonryTestsLoader-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-MasonryTestsLoader-resources.sh"; sourceTree = ""; };
- 0A28546AD6B1C73C384E28625120AED5 /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MASConstraintMaker.h; sourceTree = ""; };
- 0A3DE5BA9F1F1BFDC50FA062018A4FF9 /* EXPMatcherHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcherHelpers.h; path = Expecta/Matchers/EXPMatcherHelpers.h; sourceTree = ""; };
- 0AAF8809A7BBA8A694825848A7EF07D2 /* EXPMatchers+beTruthy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beTruthy.h"; path = "Expecta/Matchers/EXPMatchers+beTruthy.h"; sourceTree = ""; };
- 0F2DF08BADAA0D595D88E9A5F2F4AE8F /* Pods-Masonry iOS Examples-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Masonry iOS Examples-dummy.m"; sourceTree = ""; };
- 10904D53FD27FC7E59BF92201687D517 /* EXPMatchers+beInTheRangeOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInTheRangeOf.h"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.h"; sourceTree = ""; };
- 10A477660D2D97AEF58A6795020511A9 /* libPods-Masonry iOS Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-Masonry iOS Tests.a"; path = "libPods-Masonry iOS Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 10F0627165FE862DA384F755B45FD6A7 /* EXPMatchers+raise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raise.h"; path = "Expecta/Matchers/EXPMatchers+raise.h"; sourceTree = ""; };
- 10F25824C22E66EAFBAA5C0F62629D84 /* EXPMatchers+match.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+match.m"; path = "Expecta/Matchers/EXPMatchers+match.m"; sourceTree = ""; };
- 122F547802BB911D1B9F0D52C33B568D /* EXPMatchers+beLessThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h"; sourceTree = ""; };
- 13852BA59629381181212D4693F5CEC8 /* EXPMatchers+raiseWithReason.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raiseWithReason.h"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.h"; sourceTree = ""; };
- 190660A7B90AD2F0323CF9185E32C8D5 /* Expecta-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Expecta-prefix.pch"; sourceTree = ""; };
- 194EE173246D25F2D7ED8C47FAF2ACF4 /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MASViewConstraint.h; sourceTree = ""; };
- 1B998D4CCC665C40E8A45CF07DFD7ABC /* Pods-Masonry iOS Examples.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Masonry iOS Examples.release.xcconfig"; sourceTree = ""; };
- 1C060BC1E7116BC87FA94B45087D771B /* ExpectaObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaObject.m; path = Expecta/ExpectaObject.m; sourceTree = ""; };
- 1C13229D7A9FD06FAA259C99FB5A6E11 /* Pods-Masonry iOS Examples-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Masonry iOS Examples-resources.sh"; sourceTree = ""; };
- 1D20E91754698E478D6D3E468D5EC2C8 /* EXPMatchers+beNil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beNil.h"; path = "Expecta/Matchers/EXPMatchers+beNil.h"; sourceTree = ""; };
- 1F04D682D92E0B2B40FCE8BE214BDA61 /* EXPMatchers+beGreaterThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThan.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.h"; sourceTree = ""; };
- 1F1DE5E5E11E91062A5DA859EDCE3C49 /* EXPUnsupportedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPUnsupportedObject.h; path = Expecta/EXPUnsupportedObject.h; sourceTree = ""; };
- 1F4C6FD0E96DEE3BA24A38BA86A2EE83 /* EXPMatchers+beKindOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beKindOf.m"; path = "Expecta/Matchers/EXPMatchers+beKindOf.m"; sourceTree = ""; };
- 1FD8638DC7137054523DFDCD37576559 /* EXPMatchers+beCloseTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beCloseTo.h"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.h"; sourceTree = ""; };
- 2251A125FE1F9EE61891B85AAAE71511 /* EXPMatchers+beNil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beNil.m"; path = "Expecta/Matchers/EXPMatchers+beNil.m"; sourceTree = ""; };
- 228937A58D5E1EF34C595366A42C018E /* EXPMatchers+raiseWithReason.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raiseWithReason.m"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.m"; sourceTree = ""; };
- 2547652506D61F49D4B0882ED6B64B16 /* EXPMatchers+beFalsy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beFalsy.m"; path = "Expecta/Matchers/EXPMatchers+beFalsy.m"; sourceTree = ""; };
- 2A31938A554F154B402756FCBFE7167B /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSArray+MASAdditions.m"; sourceTree = ""; };
- 2A7DB9040882B1058689C275628BAD96 /* libExpecta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libExpecta.a; path = libExpecta.a; sourceTree = BUILT_PRODUCTS_DIR; };
- 2B6A8C9B5A40329ADEFB0567ED8489DC /* libMasonry.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMasonry.a; path = libMasonry.a; sourceTree = BUILT_PRODUCTS_DIR; };
- 2B80588779A2286A5E054DE4D0DDC03A /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "View+MASShorthandAdditions.h"; sourceTree = ""; };
- 2C5D45C77F469660C6D6155EA159784F /* EXPMatchers+postNotification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+postNotification.h"; path = "Expecta/Matchers/EXPMatchers+postNotification.h"; sourceTree = ""; };
- 2F3869A1E846595FC8A567E9EF91600E /* EXPMatchers+beSupersetOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSupersetOf.h"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.h"; sourceTree = ""; };
- 34177F23961DA5ABF45170FA2037F8C1 /* EXPMatchers+beginWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beginWith.m"; path = "Expecta/Matchers/EXPMatchers+beginWith.m"; sourceTree = ""; };
- 358E8501C72A8B4A191589A7570FCC15 /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; };
- 3683CAB8F5A6384907767DF9817A4B09 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "View+MASAdditions.h"; sourceTree = ""; };
- 3ABABA36A05ECCDA76F9388C3A7262E8 /* Pods-Masonry iOS Examples-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Masonry iOS Examples-acknowledgements.plist"; sourceTree = ""; };
- 3B014C13318B98A27EB6C15EB341678A /* EXPMatchers+beInTheRangeOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInTheRangeOf.m"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.m"; sourceTree = ""; };
- 3D0C38F1CACBCE8726531E82CF48BE6A /* Pods-Masonry iOS Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Masonry iOS Tests-acknowledgements.plist"; sourceTree = ""; };
- 40B4963257702BBD9CAF03BECB9D16F0 /* Pods-MasonryTestsLoader-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MasonryTestsLoader-dummy.m"; sourceTree = ""; };
- 41073685DCEF4DD54806A297165DB39F /* Pods-MasonryTestsLoader.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MasonryTestsLoader.debug.xcconfig"; sourceTree = ""; };
- 44127DD3F6457EEB52F5B0B644C748E5 /* EXPMatchers+contain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+contain.h"; path = "Expecta/Matchers/EXPMatchers+contain.h"; sourceTree = ""; };
- 4730731B518BAFE15142AA613F01F2EB /* ExpectaObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaObject.h; path = Expecta/ExpectaObject.h; sourceTree = ""; };
- 481E644C11C98774BE98309BA0A2CB6C /* EXPMatchers+beFalsy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beFalsy.h"; path = "Expecta/Matchers/EXPMatchers+beFalsy.h"; sourceTree = ""; };
- 489F09523F5700F4F414FA98E0BDEEE4 /* Expecta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Expecta.xcconfig; sourceTree = ""; };
- 48FB054B1F997F66CA0E17DB3B26223C /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MASConstraint+Private.h"; sourceTree = ""; };
- 49E1D663D9B2CCDFFC739982A06D57C5 /* EXPMatchers+beginWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beginWith.h"; path = "Expecta/Matchers/EXPMatchers+beginWith.h"; sourceTree = ""; };
- 4AF06A246FC5C7C1E779C3BFB883040C /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; };
- 4B6B3284B56CCD1FFA3F49D1751D4763 /* Pods-MasonryTestsLoader-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MasonryTestsLoader-acknowledgements.markdown"; sourceTree = ""; };
- 4EEA345137E6F1B86DEC1ECEA04BEBD5 /* EXPFloatTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPFloatTuple.m; path = Expecta/EXPFloatTuple.m; sourceTree = ""; };
- 50660A3CB85C3AEC478DB2211E3CD76D /* Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Expecta.h; path = Expecta/Expecta.h; sourceTree = ""; };
- 5478FCE860D549499E9B142210C4E612 /* Pods-Masonry iOS Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Masonry iOS Tests-dummy.m"; sourceTree = ""; };
- 55CDC4616612ED7AA50A3E836E82B6BE /* EXPBlockDefinedMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPBlockDefinedMatcher.h; path = Expecta/EXPBlockDefinedMatcher.h; sourceTree = ""; };
- 56B7202FE09B3976D80FD78EF63258F6 /* EXPMatchers+beTruthy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beTruthy.m"; path = "Expecta/Matchers/EXPMatchers+beTruthy.m"; sourceTree = ""; };
- 57E3007D6F08B4F287C35811E372C9D8 /* EXPBlockDefinedMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPBlockDefinedMatcher.m; path = Expecta/EXPBlockDefinedMatcher.m; sourceTree = ""; };
- 58004526F7F7D8C02F9C425D2847EA60 /* Pods-Masonry iOS Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Masonry iOS Tests-resources.sh"; sourceTree = ""; };
- 585243F6624B3378D0DA0CF280D9F8EA /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; };
- 590084C07434815AE5BEC2E76CD54154 /* Pods-Masonry iOS Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Masonry iOS Tests.release.xcconfig"; sourceTree = ""; };
- 593CB40473F1E441BC65F0044379DA72 /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSArray+MASShorthandAdditions.h"; sourceTree = ""; };
- 59623D6FE7CFF9076F3ACA8D492A0A1E /* EXPMatchers+beGreaterThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h"; sourceTree = ""; };
- 5A30D7435201DE311E06A35CEA390581 /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ViewController+MASAdditions.m"; sourceTree = ""; };
- 5B9D165EC173241B2C9EFF6FDB72491D /* EXPMatchers+beInstanceOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInstanceOf.h"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.h"; sourceTree = ""; };
- 5C71CEC9EB6A0B127237D9BE7AAB6081 /* EXPMatchers+beInstanceOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInstanceOf.m"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.m"; sourceTree = ""; };
- 5D2BB147FD43518883D32412C882B443 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MASUtilities.h; sourceTree = ""; };
- 5EEECBC2AC825C5498273AB762F561EF /* EXPMatchers+endWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+endWith.h"; path = "Expecta/Matchers/EXPMatchers+endWith.h"; sourceTree = ""; };
- 61A4675B57359AB9653085CE195438A0 /* EXPMatchers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatchers.h; path = Expecta/Matchers/EXPMatchers.h; sourceTree = ""; };
- 639FB58CFFC214FCCF32C06B0ACC9B5B /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; };
- 63BB2BA348CAEB74A836E775BF8ABE2C /* EXPFloatTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPFloatTuple.h; path = Expecta/EXPFloatTuple.h; sourceTree = ""; };
- 663B481626C7E7C19A7A42120FFC0E77 /* EXPMatchers+haveCountOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+haveCountOf.m"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.m"; sourceTree = ""; };
- 67872159D235C01079FD18A895BC35BE /* Pods-Masonry iOS Examples-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Masonry iOS Examples-acknowledgements.markdown"; sourceTree = ""; };
- 687D54A17077AB5A8B750650CACBF3B3 /* EXPMatchers+beIdenticalTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beIdenticalTo.m"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.m"; sourceTree = ""; };
- 6CBE98CC00A3DD78FC850D713EB164BE /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MASLayoutConstraint.h; sourceTree = ""; };
- 6F83FB50741120EF2F5F9723A76C9099 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ViewController+MASAdditions.h"; sourceTree = ""; };
- 7559C19053134AD8CF9C91D122AC2090 /* Pods-Masonry iOS Examples-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Masonry iOS Examples-frameworks.sh"; sourceTree = ""; };
- 75992ED787187D30BE4B5F69BEF5EE30 /* EXPMatchers+haveCountOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+haveCountOf.h"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.h"; sourceTree = ""; };
- 7735CC4570D0C643EF99240D43284C4A /* EXPExpect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPExpect.h; path = Expecta/EXPExpect.h; sourceTree = ""; };
- 7A54ADC5F5885AE49835C21390D7B42C /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MASViewConstraint.m; sourceTree = ""; };
- 7B14D8EAF812AD82BC8BA17C3DE5B573 /* EXPMatchers+beLessThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m"; sourceTree = ""; };
- 7BD870522AC013353A13269A9CDEA664 /* EXPMatcherHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPMatcherHelpers.m; path = Expecta/Matchers/EXPMatcherHelpers.m; sourceTree = ""; };
- 7C9A0D7E24E5DCE2B938FC4C4901B353 /* EXPMatchers+beGreaterThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m"; sourceTree = ""; };
- 7EBF9BAD2F54920E12BA8D79EB3EE01C /* EXPDoubleTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPDoubleTuple.m; path = Expecta/EXPDoubleTuple.m; sourceTree = ""; };
- 7F338BE8E88D6EB9496878863145B7C5 /* EXPDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDefines.h; path = Expecta/EXPDefines.h; sourceTree = ""; };
- 80708E2496B3C69452E559E575CD1D47 /* ExpectaSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaSupport.h; path = Expecta/ExpectaSupport.h; sourceTree = ""; };
- 8140BF73F39AA0E15893403B6B2DCD9D /* EXPMatchers+beLessThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThan.h"; path = "Expecta/Matchers/EXPMatchers+beLessThan.h"; sourceTree = ""; };
- 82F3CFD18ABD64DD8E88230EE43D854A /* NSValue+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSValue+Expecta.h"; path = "Expecta/NSValue+Expecta.h"; sourceTree = ""; };
- 8524B32277BDB7E1A36FB5F3EB3BAC6B /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MASCompositeConstraint.m; sourceTree = ""; };
- 8780C4CC76E68DD8EA97F0E4B3287D64 /* EXPMatchers+equal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+equal.h"; path = "Expecta/Matchers/EXPMatchers+equal.h"; sourceTree = ""; };
- 88907F8AEA4C9B20AEB63E2047F54502 /* EXPMatchers+match.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+match.h"; path = "Expecta/Matchers/EXPMatchers+match.h"; sourceTree = ""; };
- 8B4562385452B8EF12C3E0EFC2E07D12 /* libPods-Masonry iOS Examples.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-Masonry iOS Examples.a"; path = "libPods-Masonry iOS Examples.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 8F3B66464C8F4DC1EDFFEA58A98F9B5C /* EXPMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcher.h; path = Expecta/EXPMatcher.h; sourceTree = ""; };
- 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
- 9616A699420336DD8F227A5C41E36432 /* EXPMatchers+respondTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+respondTo.m"; path = "Expecta/Matchers/EXPMatchers+respondTo.m"; sourceTree = ""; };
- 98AFDA78C0BA149C8976CF3889419AA7 /* EXPMatchers+beSubclassOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSubclassOf.m"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.m"; sourceTree = ""; };
- 9D1DE5A0855C3142FCDE4471717B4C92 /* EXPMatchers+raise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raise.m"; path = "Expecta/Matchers/EXPMatchers+raise.m"; sourceTree = ""; };
- 9F34293A1C0AD9FD7013D79B910FE7E5 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MASConstraint.h; sourceTree = ""; };
- AD6D89D8C414349AAD70BD448A0EB42D /* Pods-MasonryTestsLoader.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MasonryTestsLoader.release.xcconfig"; sourceTree = ""; };
- ADBF0443B4181A4D41268AB9F62AA73C /* NSValue+Expecta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSValue+Expecta.m"; path = "Expecta/NSValue+Expecta.m"; sourceTree = ""; };
- AE58747F7ED5EE1564AC83C82F3C9DEA /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MASViewAttribute.h; sourceTree = ""; };
- AEDF716CFA2F6ADA12E2C6D67EF8B2D2 /* EXPDoubleTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDoubleTuple.h; path = Expecta/EXPDoubleTuple.h; sourceTree = ""; };
- AEEF83956F9DBD675F4C2EF46B690567 /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MASConstraint.m; sourceTree = ""; };
- B1B09BEB8A5DCEEF709CBA1F5CEE0B3B /* EXPMatchers+beGreaterThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThan.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.m"; sourceTree = ""; };
- B20D7BAA1D4E85394D4C0BCBCB2BF960 /* EXPMatchers+endWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+endWith.m"; path = "Expecta/Matchers/EXPMatchers+endWith.m"; sourceTree = ""; };
- BB267133DB0AAEF96D19D2085B85E06D /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MASViewAttribute.m; sourceTree = ""; };
- BF54E13A05CB850F6732BED53C409DF8 /* Pods-Masonry iOS Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Masonry iOS Tests-acknowledgements.markdown"; sourceTree = ""; };
- BFE37A3BBF6AEB4B7163AAE1BD655CDD /* EXPMatchers+equal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+equal.m"; path = "Expecta/Matchers/EXPMatchers+equal.m"; sourceTree = ""; };
- C0F0C9DE4D36C0025D1A49B0106644A4 /* NSObject+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Expecta.h"; path = "Expecta/NSObject+Expecta.h"; sourceTree = ""; };
- C3EDF7B170EC221838CC2A773B0CDC59 /* EXPMatchers+beCloseTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beCloseTo.m"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.m"; sourceTree = ""; };
- C4EC8E6D70CF2CC9E094524A6560BC80 /* libPods-MasonryTestsLoader.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-MasonryTestsLoader.a"; path = "libPods-MasonryTestsLoader.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- C565C77B7F3AC98E871994970653A958 /* EXPMatchers+conformTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+conformTo.m"; path = "Expecta/Matchers/EXPMatchers+conformTo.m"; sourceTree = ""; };
- C5ABB1C6CB3F9F99597CCF6727731A7B /* Pods-Masonry iOS Examples.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Masonry iOS Examples.debug.xcconfig"; sourceTree = ""; };
- C7004C5DD5811F3431B3C72C3ED02D96 /* Pods-MasonryTestsLoader-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-MasonryTestsLoader-frameworks.sh"; sourceTree = ""; };
- C98931A95CEDDC4098458BEB8FF864ED /* EXPMatchers+beIdenticalTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beIdenticalTo.h"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.h"; sourceTree = ""; };
- CBEA9FE72B61C2E594B205165A09ECA7 /* EXPExpect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPExpect.m; path = Expecta/EXPExpect.m; sourceTree = ""; };
- CBFE4C2A8558AE9FF24FCA67343113E2 /* EXPMatchers+beSubclassOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSubclassOf.h"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.h"; sourceTree = ""; };
- D17CA42B2DBD2AB2BBA3CBB7E2205968 /* Masonry.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.xcconfig; sourceTree = ""; };
- D242BA4F2D8595007967657C3EBF92CE /* EXPMatchers+respondTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+respondTo.h"; path = "Expecta/Matchers/EXPMatchers+respondTo.h"; sourceTree = ""; };
- D50A0454EC2ACA566EC1A84F70DBE96A /* Expecta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Expecta-dummy.m"; sourceTree = ""; };
- D8A10F7BEA143532312B95447C5A5B7C /* ExpectaSupport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaSupport.m; path = Expecta/ExpectaSupport.m; sourceTree = ""; };
- DB37BB623433F136572448D26D6FB70A /* EXPMatchers+contain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+contain.m"; path = "Expecta/Matchers/EXPMatchers+contain.m"; sourceTree = ""; };
- DBCE4AE4A77A457256CB505688569B23 /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MASLayoutConstraint.m; sourceTree = ""; };
- DD2917440B958D545CC2EE8F2240D37E /* EXPMatchers+beSupersetOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSupersetOf.m"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.m"; sourceTree = ""; };
- DDF04AEFCC4B011565BFFBFFF52B2FCE /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
- DE147446A1225BA68EA82615B1436CC1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
- E1DAB7DBD1812988117194D50ACE07A0 /* EXPMatchers+beKindOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beKindOf.h"; path = "Expecta/Matchers/EXPMatchers+beKindOf.h"; sourceTree = ""; };
- E2824F3F718434AEC2CE23045FEC5541 /* Pods-MasonryTestsLoader-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MasonryTestsLoader-acknowledgements.plist"; sourceTree = ""; };
- E2D9897D646E2BB9FBF73704C04440B2 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
- E36B444420761FDAD709E0D161F812C1 /* EXPMatchers+conformTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+conformTo.h"; path = "Expecta/Matchers/EXPMatchers+conformTo.h"; sourceTree = ""; };
- E4CFDB3889CFAC5E05497101D3F82C0A /* EXPMatchers+beLessThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThan.m"; path = "Expecta/Matchers/EXPMatchers+beLessThan.m"; sourceTree = ""; };
- E66C1687519434878576CA9CA479B868 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MASCompositeConstraint.h; sourceTree = ""; };
- EB9E853361218FD2866DABF9A3E384D5 /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MASConstraintMaker.m; sourceTree = ""; };
- EF1B79566A439B7A68A81F499EBFDDE1 /* Pods-Masonry iOS Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Masonry iOS Tests.debug.xcconfig"; sourceTree = ""; };
- FC8A8F10966AF0D4BEF49EBF2CFF4C0C /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Masonry.h; sourceTree = ""; };
+ 02EEB3D513AE4127353434103F20DF7A /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; };
+ 034FBFCB448F9D15F7570093A95EF0C2 /* libPods-Masonry iOS Examples.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-Masonry iOS Examples.a"; path = "libPods-Masonry iOS Examples.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 0414F8191399724707CC515B23938266 /* EXPMatchers+contain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+contain.h"; path = "Expecta/Matchers/EXPMatchers+contain.h"; sourceTree = ""; };
+ 070DD0B5FF3AEC96294E28E7546898E3 /* EXPMatchers+equal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+equal.m"; path = "Expecta/Matchers/EXPMatchers+equal.m"; sourceTree = ""; };
+ 078F70BA7D353AFB208803CB51C4358A /* Pods-Masonry iOS Examples.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Masonry iOS Examples.debug.xcconfig"; sourceTree = ""; };
+ 08F7F0770B4878B9883B87DCD8569CB4 /* libExpecta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libExpecta.a; path = libExpecta.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ 097C9C9334A54D561D4D91899DC6D0F5 /* EXPDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDefines.h; path = Expecta/EXPDefines.h; sourceTree = ""; };
+ 0A2355A7FF831E92E2450625F2701398 /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; };
+ 0B699617FD75A57FEAE1EDBA21B04F11 /* Pods-MasonryTestsLoader-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MasonryTestsLoader-acknowledgements.plist"; sourceTree = ""; };
+ 0BF8087A416A7EB3F95BECB53A82AE7F /* EXPMatchers+postNotification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+postNotification.m"; path = "Expecta/Matchers/EXPMatchers+postNotification.m"; sourceTree = ""; };
+ 0EAC10A91468BFB1107398DCBD3671CB /* EXPUnsupportedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPUnsupportedObject.m; path = Expecta/EXPUnsupportedObject.m; sourceTree = ""; };
+ 0EB461EE218697A6B792EE827934B5E0 /* EXPMatchers+endWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+endWith.m"; path = "Expecta/Matchers/EXPMatchers+endWith.m"; sourceTree = ""; };
+ 109B3FC0CAC2B4FD7E9BC1B1174C4152 /* Masonry.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.release.xcconfig; sourceTree = ""; };
+ 10AA62639EDB09AE916B3DD8AAD36DC3 /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; };
+ 17242E03658EDAE3CC8E0FFA33C92566 /* libPods-Masonry iOS Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-Masonry iOS Tests.a"; path = "libPods-Masonry iOS Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1735ABCBAE67332541684FB30FE21FDF /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; };
+ 1B6CD575CEFDAC7E72EFE1A907057FB9 /* EXPMatchers+beTruthy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beTruthy.h"; path = "Expecta/Matchers/EXPMatchers+beTruthy.h"; sourceTree = ""; };
+ 1EDF2951F01474822E0E8F9EB76143A5 /* EXPMatchers+beSubclassOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSubclassOf.h"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.h"; sourceTree = ""; };
+ 1FFED36A657123030ABB700256D73F15 /* libMasonry.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMasonry.a; path = libMasonry.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ 2287AC47D72FED8A0AFDC9B7EBE176EC /* ExpectaObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaObject.m; path = Expecta/ExpectaObject.m; sourceTree = ""; };
+ 25615882305B886DDE423AE5E03DF5CB /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; };
+ 28F25B1BD3C8C2239E421AF5DBAFFCC3 /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; };
+ 299ABE997F6723183C584B121F94415E /* Pods-MasonryTestsLoader-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MasonryTestsLoader-dummy.m"; sourceTree = ""; };
+ 2AD8B96FC6EA509C6208FBBD04895018 /* EXPMatchers+beSubclassOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSubclassOf.m"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.m"; sourceTree = ""; };
+ 2B4B8CBF384D897E9FDA56292461EF02 /* NSValue+Expecta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSValue+Expecta.m"; path = "Expecta/NSValue+Expecta.m"; sourceTree = ""; };
+ 2D07A6AA6C9E025EE07A84762AFCFA0C /* Pods-Masonry iOS Examples.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Masonry iOS Examples.release.xcconfig"; sourceTree = ""; };
+ 30933C59CA21076A391BAAAB4AD2CD4C /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; };
+ 3363C5068ED635F923E73ABFAC14E437 /* Pods-Masonry iOS Examples-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Masonry iOS Examples-acknowledgements.markdown"; sourceTree = ""; };
+ 33D751850CDEDE02F7ABFACA6610FDC9 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; };
+ 37BB8D352222CE40BC119089DA9D26C1 /* Expecta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Expecta-dummy.m"; sourceTree = ""; };
+ 37C9A4075B3D6A87244FD6442E426342 /* Expecta.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Expecta.release.xcconfig; sourceTree = ""; };
+ 3967033705D28226FDBC02F4EF3D832D /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; };
+ 40510E8BC036FFDDF98EB28362EEFCEC /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; };
+ 40848C0C12BFC3FFF04BA34DE0CFEDE1 /* EXPDoubleTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDoubleTuple.h; path = Expecta/EXPDoubleTuple.h; sourceTree = ""; };
+ 4208F20FBB51E24C0035B0A9043519E5 /* EXPMatchers+raise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raise.m"; path = "Expecta/Matchers/EXPMatchers+raise.m"; sourceTree = ""; };
+ 4264D1B3E3017D85F1079D57BDF5A1D8 /* EXPUnsupportedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPUnsupportedObject.h; path = Expecta/EXPUnsupportedObject.h; sourceTree = ""; };
+ 42A6E443D42C1EE234A2449E3F370942 /* EXPExpect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPExpect.h; path = Expecta/EXPExpect.h; sourceTree = ""; };
+ 4324340906222BC4D70B66CC607CE6EE /* EXPFloatTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPFloatTuple.h; path = Expecta/EXPFloatTuple.h; sourceTree = ""; };
+ 43836DE8E97F5392C276F30B8D7AD514 /* EXPMatchers+beGreaterThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h"; sourceTree = ""; };
+ 43A67C92FB8A7592CBCE09307DA01AF0 /* EXPMatchers+conformTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+conformTo.m"; path = "Expecta/Matchers/EXPMatchers+conformTo.m"; sourceTree = ""; };
+ 4448FECF990760A568B005012B766C32 /* EXPMatchers+beIdenticalTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beIdenticalTo.m"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.m"; sourceTree = ""; };
+ 4512CC9B9209948D1320D1A93879F65F /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; };
+ 47F0F62DAA372493A08D04CE3637FBD9 /* Masonry.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = Masonry.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+ 48110E19BBB54C5CA27DE1EBA62F7562 /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; };
+ 4C6A4D44BC66DA17B7398BFA64ADC39A /* Pods-Masonry iOS Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Masonry iOS Tests.release.xcconfig"; sourceTree = ""; };
+ 4E8B1FF46411CDB71C0D319565D34343 /* MASUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASUtilities.m; path = Masonry/MASUtilities.m; sourceTree = ""; };
+ 541464FB5D516499DF0360723BD4BB7C /* EXPFloatTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPFloatTuple.m; path = Expecta/EXPFloatTuple.m; sourceTree = ""; };
+ 5AA7AE2F6519C01A858AA56ADC6C0118 /* EXPMatchers+beFalsy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beFalsy.m"; path = "Expecta/Matchers/EXPMatchers+beFalsy.m"; sourceTree = ""; };
+ 5C9BFB46434107BF7B2A364929A9075F /* EXPMatchers+respondTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+respondTo.h"; path = "Expecta/Matchers/EXPMatchers+respondTo.h"; sourceTree = ""; };
+ 5CC7208CF5DD688411DE1074CD347C34 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; };
+ 5D7E76599E0A16881905020078431451 /* EXPExpect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPExpect.m; path = Expecta/EXPExpect.m; sourceTree = ""; };
+ 6173CC31C10F0050D31733615599B090 /* EXPMatchers+contain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+contain.m"; path = "Expecta/Matchers/EXPMatchers+contain.m"; sourceTree = ""; };
+ 66DF1607BF8FFF84DD6639E94DE88378 /* EXPMatchers+beLessThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h"; sourceTree = ""; };
+ 66F3282D196FCB866C87A63E1210D189 /* Pods-Masonry iOS Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Masonry iOS Tests-acknowledgements.markdown"; sourceTree = ""; };
+ 69E0E543DB95F5EF77C15AA13AB54C95 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; };
+ 6A49105F3076B160126FA5F97C1C3C12 /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; };
+ 6B010F85FB7805073FD3A073341E97E2 /* EXPMatchers+beFalsy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beFalsy.h"; path = "Expecta/Matchers/EXPMatchers+beFalsy.h"; sourceTree = ""; };
+ 6B6580C52FB3F2F65EEF0CECF613374E /* EXPMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcher.h; path = Expecta/EXPMatcher.h; sourceTree = ""; };
+ 6DB89D24ECB0566107D944096312C3FA /* Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Expecta.h; path = Expecta/Expecta.h; sourceTree = ""; };
+ 6E2F6452C6FBF7416CC1FDCA290F5E96 /* Pods-MasonryTestsLoader.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MasonryTestsLoader.debug.xcconfig"; sourceTree = ""; };
+ 6F988A27369666BDE47CDB2B6C809945 /* EXPMatcherHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPMatcherHelpers.m; path = Expecta/Matchers/EXPMatcherHelpers.m; sourceTree = ""; };
+ 70EA2CAC52167DA57CEEEA6F37C6D3AD /* View+MASShorthandAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASShorthandAdditions.m"; path = "Masonry/View+MASShorthandAdditions.m"; sourceTree = ""; };
+ 7340210602BDFD1CA8C7535091837F6C /* EXPMatchers+raiseWithReason.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raiseWithReason.h"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.h"; sourceTree = ""; };
+ 741EDD04C8E9AC9B3074B26C300957A9 /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; };
+ 74DF6E1ECAB984700147F9BA24F206B3 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; };
+ 769D2BD9A360398965D078254446EE92 /* EXPMatchers+beInstanceOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInstanceOf.m"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.m"; sourceTree = ""; };
+ 7C47D35BD16CD8E62D1ADDE116711C6D /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; };
+ 7EA666C2D9E5F656BFCC3EB1E1DFC5F8 /* EXPMatchers+haveCountOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+haveCountOf.m"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.m"; sourceTree = ""; };
+ 803A15B8EC7FC56D120C016A7B89BBCC /* EXPMatchers+beSupersetOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSupersetOf.h"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.h"; sourceTree = ""; };
+ 8076E486DC7258AC955A834960FE452D /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; };
+ 82027158F59D887F35B18901C0012EDE /* EXPMatchers+equal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+equal.h"; path = "Expecta/Matchers/EXPMatchers+equal.h"; sourceTree = ""; };
+ 829FE3CD93FECE6DA8F960BECA7004DB /* EXPMatchers+beInstanceOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInstanceOf.h"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.h"; sourceTree = ""; };
+ 82C52D4DED5698D760C6C085693FFE20 /* Pods-Masonry iOS Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Masonry iOS Tests.debug.xcconfig"; sourceTree = ""; };
+ 854B390E1F4E5BB07C6CFA25B7691D16 /* ExpectaSupport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaSupport.m; path = Expecta/ExpectaSupport.m; sourceTree = ""; };
+ 86C3D20E3852E93A705B38C87D44CF25 /* EXPMatchers+raise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raise.h"; path = "Expecta/Matchers/EXPMatchers+raise.h"; sourceTree = ""; };
+ 86F3DEAD3699B41D07009E64FE392FBF /* EXPMatchers+beCloseTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beCloseTo.m"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.m"; sourceTree = ""; };
+ 87B08263B34CC746FC1645359B11B5D3 /* EXPMatchers+beGreaterThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m"; sourceTree = ""; };
+ 8A87D3A7AB8CCF25E87BFA76CAB7CAA8 /* Pods-Masonry iOS Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Masonry iOS Tests-dummy.m"; sourceTree = ""; };
+ 8B04567735EB424B8830838CCDDFB6B7 /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; };
+ 8EAF619D343CBB1CF3B7401F31AEE720 /* EXPMatchers+beGreaterThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThan.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.h"; sourceTree = ""; };
+ 8F3E3D128DE2E8B3AC4885CEE00FCD05 /* EXPMatchers+beKindOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beKindOf.m"; path = "Expecta/Matchers/EXPMatchers+beKindOf.m"; sourceTree = ""; };
+ 933C56887CDDDBE0D8B572C8C77FF0CA /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; };
+ 94E012777A2AE21B882A02354D0DF491 /* EXPMatchers+beIdenticalTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beIdenticalTo.h"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.h"; sourceTree = ""; };
+ 958492CF9426E7CDA2B714635BEA9477 /* Pods-MasonryTestsLoader-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MasonryTestsLoader-acknowledgements.markdown"; sourceTree = ""; };
+ 96D9849E582F23269E90480BB21226BF /* Pods-Masonry iOS Examples-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Masonry iOS Examples-acknowledgements.plist"; sourceTree = ""; };
+ 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+ 9EAC4DB7F4781EFDF9CAEE010CE316A9 /* EXPMatchers+beGreaterThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThan.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.m"; sourceTree = ""; };
+ 9F77CE96F3DAB41E69EE8BB9050E257F /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; };
+ A10F1DEA5080C60C5317CFFF97E16F32 /* EXPDoubleTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPDoubleTuple.m; path = Expecta/EXPDoubleTuple.m; sourceTree = ""; };
+ A1364BD8BFB3079E8AF6C124BC50E889 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; };
+ A2FFDEE02AC253C0F7D76BE7E3F32CAE /* EXPMatchers+match.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+match.h"; path = "Expecta/Matchers/EXPMatchers+match.h"; sourceTree = ""; };
+ A32849E7FB9B4BC1FB808FC936C98713 /* NSArray+MASShorthandAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASShorthandAdditions.m"; path = "Masonry/NSArray+MASShorthandAdditions.m"; sourceTree = ""; };
+ A42A1FB895801BDD4E5B7B57B0A05104 /* EXPMatchers+match.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+match.m"; path = "Expecta/Matchers/EXPMatchers+match.m"; sourceTree = ""; };
+ A5716C1E8A1774B13BE9A33DC8D68EE7 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; };
+ A5E5EBA381830646070498CBB04C9A0F /* libPods-MasonryTestsLoader.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-MasonryTestsLoader.a"; path = "libPods-MasonryTestsLoader.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ A7A3D8587BC6DAB7EA6E4A343B23FBE2 /* EXPMatchers+beSupersetOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSupersetOf.m"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.m"; sourceTree = "