diff --git a/Assets/snap-banner.png b/Assets/snap-banner.png
deleted file mode 100644
index 491b6b5..0000000
Binary files a/Assets/snap-banner.png and /dev/null differ
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index 0cadb8a..0000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,17 +0,0 @@
-CHANGELOG
-=======
-
-# 0.10.0 - Next Release In Development
-
-* **BREAKING:** The constraint making chain now utilises protocols to tighten the API's to avoid user error. This may break some syntaxes.
-* **BREAKING:** Semantic `and` and `with` chain variables were removed
-* Added `update###` functions to `Constraint` so their constants and priorities can be updated
-* Added a `Snap.Config.interfaceLayoutDirection` variable for richer Leading/Trailing support.
-* Fixed memory leaks that could occur on long lived views
-* Ensure Swift 1.2 compatibility
-
-# 0.9.x - March 2015
-
-* Re-worked some internal API to allow for future updates
-* Added `snp_prepareConstraints -> [Constraint]` which allows pre-building of constraints
-* Added a fatal error to `and` when it is used after relation has been set
\ No newline at end of file
diff --git a/CodeSnippets/Snappy Constraint Make.codesnippet b/CodeSnippets/Snappy Constraint Make.codesnippet
deleted file mode 100644
index 598f6b3..0000000
--- a/CodeSnippets/Snappy Constraint Make.codesnippet
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- IDECodeSnippetCompletionPrefix
- snp_make
- IDECodeSnippetCompletionScopes
-
- CodeBlock
-
- IDECodeSnippetContents
- <#view#>.snp_makeConstraints { make in
- <#code#>
-}
- IDECodeSnippetIdentifier
- FF434629-7B96-4AB9-BD96-522275E7B106
- IDECodeSnippetLanguage
- Xcode.SourceCodeLanguage.Swift
- IDECodeSnippetTitle
- Snap Constraint Make
- IDECodeSnippetUserSnippet
-
- IDECodeSnippetVersion
- 2
-
-
diff --git a/CodeSnippets/Snappy Constraint Remake.codesnippet b/CodeSnippets/Snappy Constraint Remake.codesnippet
deleted file mode 100644
index 8bdfb9d..0000000
--- a/CodeSnippets/Snappy Constraint Remake.codesnippet
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- IDECodeSnippetCompletionPrefix
- snp_remake
- IDECodeSnippetCompletionScopes
-
- TopLevel
-
- IDECodeSnippetContents
- <#view#>.snp_remakeConstraints { make in
- <#code#>
-}
- IDECodeSnippetIdentifier
- FD093546-D614-4311-82C3-E8FE842F62B1
- IDECodeSnippetLanguage
- Xcode.SourceCodeLanguage.Swift
- IDECodeSnippetTitle
- Snap Constraint Remake
- IDECodeSnippetUserSnippet
-
- IDECodeSnippetVersion
- 0
-
-
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index e334771..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2011-2015 Masonry Team - https://github.com/Masonry
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/README.md b/README.md
deleted file mode 100644
index b30fd91..0000000
--- a/README.md
+++ /dev/null
@@ -1,349 +0,0 @@
-
-
-
-====
-
-[![Build Status](https://travis-ci.org/Masonry/Snap.svg)](https://travis-ci.org/Masonry/Snap)
-
-Snap is a light-weight layout framework which wraps AutoLayout with a nicer syntax. Snap has its own layout DSL which provides a chainable way of describing your NSLayoutConstraints which results in layout code that is more concise and readable. Snap supports both iOS and OS X.
-
-> Snap uses some Swift-only features like function overloading, so it cannot be used from Objective-C. Because of this we’ve chosen to swap prefixes from Masonry’s `mas_` to `snp_` so you can use both Masonry and Snap in the same project.
-
-## Requirements
-
-* iOS 7.0+ / Mac OS X 10.9+
-* Xcode 6.1
-
-## Installation
-
-> **Embedded frameworks require a minimum deployment target of iOS 8 or OS X Mavericks.**
-
-### CocoaPods
-
-[CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects.
-
-CocoaPods 0.36 adds supports for Swift and embedded frameworks. You can install it with the following command:
-
-```bash
-$ gem install cocoapods
-```
-
-To integrate Snap into your Xcode project using CocoaPods, specify it in your `Podfile`:
-
-```ruby
-source 'https://github.com/CocoaPods/Specs.git'
-platform :ios, '8.0'
-use_frameworks!
-
-pod 'Snap', '~> 0.9.2'
-```
-
-Then, run the following command:
-
-```bash
-$ pod install
-```
-
-### Carthage
-
-Carthage is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application.
-
-You can install Carthage with [Homebrew](http://brew.sh/) using the following command:
-
-```bash
-$ brew update
-$ brew install carthage
-```
-
-To integrate Snap into your Xcode project using Carthage, specify it in your `Cartfile`:
-
-```
-github "Masonry/Snap" >= 0.9.2
-```
-
-### Manually
-
-If you prefer not to use either of the aforementioned dependency managers, you can integrate Snap into your project manually.
-
-### Embedded Framework
-
-- Add Snap as a [submodule](http://git-scm.com/docs/git-submodule) by opening the Terminal, `cd`-ing into your top-level project directory, and entering the following command:
-
-```bash
-$ git submodule add https://github.com/Masonry/Snap.git
-```
-
-- Open the `Snap` folder, and drag `Snap.xcodeproj` into the file navigator of your app project.
-- In Xcode, navigate to the target configuration window by clicking on the blue project icon, and selecting the application target under the "Targets" heading in the sidebar.
-- Ensure that the deployment target of Snap.framework matches that of the application target.
-- In the tab bar at the top of that window, open the "Build Phases" panel.
-- Expand the "Target Dependencies" group, and add `Snap.framework`.
-- Click on the `+` button at the top left of the panel and select "New Copy Files Phase". Rename this new phase to "Copy Frameworks", set the "Destination" to "Frameworks", and add `Snap.framework`.
-
-## What's wrong with NSLayoutConstraints?
-
-Under the hood Auto Layout is a powerful and flexible way of organising and laying out your views. However creating constraints from code is verbose and not very descriptive.
-Imagine a simple example in which you want to have a view fill its superview but inset by 10 pixels on every side
-```swift
-let superview = self;
-
-let view1 = UIView()
-view1.setTranslatesAutoresizingMaskIntoConstraints(false)
-view1.backgroundColor = UIColor.greenColor()
-superview.addSubview(view1)
-
-let padding = UIEdgeInsetsMake(10, 10, 10, 10)
-
-superview.addConstraints([
- NSLayoutConstraint(
- item: view1,
- attribute: NSLayoutAttribute.Top,
- relatedBy: NSLayoutRelation.Equal,
- toItem: superview,
- attribute: NSLayoutAttribute.Top,
- multiplier: 1.0,
- constant: padding.top
- ),
- NSLayoutConstraint(
- item: view1,
- attribute: NSLayoutAttribute.Left,
- relatedBy: NSLayoutRelation.Equal,
- toItem: superview,
- attribute: NSLayoutAttribute.Left,
- multiplier: 1.0,
- constant: padding.left
- ),
- NSLayoutConstraint(
- item: view1,
- attribute: NSLayoutAttribute.Bottom,
- relatedBy: NSLayoutRelation.Equal,
- toItem: superview,
- attribute: NSLayoutAttribute.Bottom,
- multiplier: 1.0,
- constant: -padding.bottom
- ),
- NSLayoutConstraint(
- item: view1,
- attribute: NSLayoutAttribute.Right,
- relatedBy: NSLayoutRelation.Equal,
- toItem: superview,
- attribute: NSLayoutAttribute.Right,
- multiplier: 1.0,
- constant: -padding.right
- )
-])
-```
-Even with such a simple example the code needed is quite verbose and quickly becomes unreadable when you have more than 2 or 3 views.
-Another option is to use Visual Format Language (VFL), which is a bit less long winded.
-However the ASCII type syntax has its own pitfalls and its also a bit harder to animate as `NSLayoutConstraint.constraintsWithVisualFormat` returns an array.
-
-## Prepare to meet your Maker!
-
-Heres the same constraints created using ConstraintMaker
-
-```swift
-let padding = UIEdgeInsetsMake(10, 10, 10, 10)
-
-view1.snp_makeConstraints { (make) -> Void in
- make.top.equalTo(superview.snp_top).offset(padding.top)
- make.left.equalTo(superview.snp_left).offset(padding.left)
- make.bottom.equalTo(superview.snp_bottom).offset(-padding.bottom)
- make.right.equalTo(superview.snp_right).offset(-padding.right)
-}
-```
-Or even shorter
-
-```swift
-view1.snp_makeConstraints { (make) -> Void in
- make.edges.equalTo(superview).insets(padding)
-}
-```
-
-Also note in the first example we had to add the constraints to the superview `superview.addConstraints`.
-Snap however will automagically add constraints to the appropriate view.
-
-Snap will also call `view1.setTranslatesAutoresizingMaskIntoConstraints(false)` for you.
-
-## Not all things are created equal
-
-> `.equalTo` equivalent to **NSLayoutRelation.Equal**
-
-> `.lessThanOrEqualTo` equivalent to **NSLayoutRelation.LessThanOrEqual**
-
-> `.greaterThanOrEqualTo` equivalent to **NSLayoutRelation.GreaterThanOrEqual**
-
-These three equality constraints accept one argument which can be any of the following:
-
-#### 1. ViewAttribute
-
-```swift
-make.centerX.lessThanOrEqualTo(view2.snp_left)
-```
-
-ViewAttribute | NSLayoutAttribute
-------------------------- | --------------------------
-view.snp_left | NSLayoutAttribute.Left
-view.snp_right | NSLayoutAttribute.Right
-view.snp_top | NSLayoutAttribute.Top
-view.snp_bottom | NSLayoutAttribute.Bottom
-view.snp_leading | NSLayoutAttribute.Leading
-view.snp_trailing | NSLayoutAttribute.Trailing
-view.snp_width | NSLayoutAttribute.Width
-view.snp_height | NSLayoutAttribute.Height
-view.snp_centerX | NSLayoutAttribute.CenterX
-view.snp_centerY | NSLayoutAttribute.CenterY
-view.snp_baseline | NSLayoutAttribute.Baseline
-
-#### 2. UIView/NSView
-
-if you want view.left to be greater than or equal to label.left :
-```swift
-// these two constraints are exactly the same
-make.left.greaterThanOrEqualTo(label)
-make.left.greaterThanOrEqualTo(label.snp_left)
-```
-
-#### 3. Strict Checks
-
-Auto Layout allows width and height to be set to constant values.
-if you want to set view to have a minimum and maximum width you could pass a primitive to the equality blocks:
-```swift
-// width >= 200 && width <= 400
-make.width.greaterThanOrEqualTo(200)
-make.width.lessThanOrEqualTo(400)
-```
-
-However Auto Layout does not allow alignment attributes such as left, right, centerY etc to be set to constant values.
-So if you pass a primitive for these attributes Snap will turn these into constraints relative to the view’s superview ie:
-```swift
-// creates view.left <= view.superview.left + 10
-make.left.lessThanOrEqualTo(10)
-```
-
-You can also use other primitives and structs to build your constraints, like so:
-```swift
-make.top.equalTo(42)
-make.height.equalTo(20)
-make.size.equalTo(CGSizeMake(50, 100))
-make.edges.equalTo(UIEdgeInsetsMake(10, 0, 10, 0))
-make.left.equalTo(view).offset(UIEdgeInsetsMake(10, 0, 10, 0))
-```
-
-## Learn to prioritize
-
-> `.prority` allows you to specify an exact priority
-
-> `.priorityHigh` equivalent to **UILayoutPriority.DefaultHigh**
-
-> `.priorityMedium` is half way between high and low
-
-> `.priorityLow` equivalent to **UILayoutPriority.DefaultLow**
-
-Priorities are can be tacked on to the end of a constraint chain like so:
-```swift
-make.left.greaterThanOrEqualTo(label.snp_left).with.priorityLow();
-
-make.top.equalTo(label.snp_top).with.priority(600);
-```
-
-## Composition, composition, composition
-
-Snap also gives you a few convenience methods which create multiple constraints at the same time.
-
-#### edges
-
-```swift
-// make top, left, bottom, right equal view2
-make.edges.equalTo(view2);
-
-// make top = superview.top + 5, left = superview.left + 10,
-// bottom = superview.bottom - 15, right = superview.right - 20
-make.edges.equalTo(superview).insets(UIEdgeInsetsMake(5, 10, 15, 20))
-```
-
-#### size
-
-```swift
-// make width and height greater than or equal to titleLabel
-make.size.greaterThanOrEqualTo(titleLabel)
-
-// make width = superview.width + 100, height = superview.height - 50
-make.size.equalTo(superview).offset(CGSizeMake(100, -50))
-```
-
-#### center
-
-```swift
-// make centerX and centerY = button1
-make.center.equalTo(button1)
-
-// make centerX = superview.centerX - 5, centerY = superview.centerY + 10
-make.center.equalTo(superview).offset(CGPointMake(-5, 10))
-```
-
-You can chain view attributes for increased readability:
-
-```swift
-// All edges but the top should equal those of the superview
-make.left.right.and.bottom.equalTo(superview)
-make.top.equalTo(otherView)
-```
-
-## Hold on for dear life
-
-Sometimes you need modify existing constraints in order to animate or remove/replace constraints.
-In Snap there are a few different approaches to updating constraints.
-
-#### 1. References
-You can hold on to a reference of a particular constraint by assigning the result of a constraint make expression to a local variable or a class property.
-You could also reference multiple constraints by storing them away in an array.
-
-```swift
-
-var topConstraint: Constraint? = nil
-
-...
-
-// when making constraints
-view1.snp_makeConstraints { make in
- self.topConstraint = make.top.equalTo(superview).with.offset(padding.top).constraint
- make.left.equalTo(superview).with.offset(padding.left)
-}
-
-...
-// then later you can call
-self.topConstraint.uninstall()
-```
-
-### 2. snp_remakeConstraints
-
-`snp_remakeConstraints` is similar to `snp_makeConstraints`, but will first remove all existing constraints installed by Snap.
-
-```swift
-func changeButtonPosition() {
- self.button.snp_remakeConstraints { make in
- make.size.equalTo(self.buttonSize)
-
- if topLeft {
- make.top.left.equalTo(10)
- } else {
- make.bottom.equalTo(self.view).offset(-10)
- make.right.equalTo(self.view).offset(-10)
- }
- }
-}
-```
-
-## Code Snippets
-
-Copy the included code snippets to ``~/Library/Developer/Xcode/UserData/CodeSnippets`` to write your snap closures at lightning speed!
-
-`snp_make` -> `.snp_makeConstraints { make in }`
-
-`snp_remake` -> `.snp_remakeConstraints { make in }`
-
-## TODO
-
-* Eye candy
-* Example projects
-* Tests
diff --git a/Snap.podspec b/Snap.podspec
deleted file mode 100644
index 539643c..0000000
--- a/Snap.podspec
+++ /dev/null
@@ -1,17 +0,0 @@
-Pod::Spec.new do |s|
- s.name = 'Snap'
- s.version = '0.9.2'
- s.license = 'MIT'
- s.summary = 'Harness the power of auto layout with a simplified, chainable, and compile time safe syntax.'
- s.homepage = 'https://github.com/Masonry/Snap'
- s.authors = { 'Robert Payne' => 'robertpayne@me.com' }
- s.social_media_url = 'http://twitter.com/robertjpayne'
- s.source = { :git => 'https://github.com/Masonry/Snap.git', :tag => '0.9.2' }
-
- s.ios.deployment_target = '8.0'
- s.osx.deployment_target = '10.9'
-
- s.source_files = 'Source/*.swift'
-
- s.requires_arc = true
-end
\ No newline at end of file
diff --git a/Snap.xcodeproj/project.pbxproj b/Snap.xcodeproj/project.pbxproj
deleted file mode 100644
index a672ccb..0000000
--- a/Snap.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,695 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 46;
- objects = {
-
-/* Begin PBXBuildFile section */
- EE94F6091AC0F10A008767FF /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE94F6081AC0F10A008767FF /* UIKit.framework */; };
- EE94F60B1AC0F10F008767FF /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE94F60A1AC0F10F008767FF /* AppKit.framework */; };
- EE94F6101AC0F143008767FF /* Snap.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EEBCC9D819CC627D0083B827 /* Snap.framework */; };
- EE94F6111AC0F146008767FF /* Snap.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EECDB37A1AC0C9D4006BBC11 /* Snap.framework */; };
- EECDB36C1AC0C9A6006BBC11 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB35E1AC0C95C006BBC11 /* Constraint.swift */; };
- EECDB36D1AC0C9A6006BBC11 /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB35F1AC0C95C006BBC11 /* ConstraintAttributes.swift */; };
- EECDB36E1AC0C9A6006BBC11 /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB3601AC0C95C006BBC11 /* ConstraintItem.swift */; };
- EECDB36F1AC0C9A6006BBC11 /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB3611AC0C95C006BBC11 /* ConstraintMaker.swift */; };
- EECDB3701AC0C9A6006BBC11 /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB3621AC0C95C006BBC11 /* ConstraintRelation.swift */; };
- EECDB3711AC0C9A6006BBC11 /* EdgeInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB3631AC0C95C006BBC11 /* EdgeInsets.swift */; };
- EECDB3721AC0C9A6006BBC11 /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB3651AC0C95C006BBC11 /* LayoutConstraint.swift */; };
- EECDB3731AC0C9A6006BBC11 /* View+Snap.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB3671AC0C95C006BBC11 /* View+Snap.swift */; };
- EECDB3741AC0C9B6006BBC11 /* Snap.h in Headers */ = {isa = PBXBuildFile; fileRef = EECDB3661AC0C95C006BBC11 /* Snap.h */; settings = {ATTRIBUTES = (Public, ); }; };
- EECDB3931AC0CB52006BBC11 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB36A1AC0C95C006BBC11 /* Tests.swift */; };
- EECDB3941AC0CB52006BBC11 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB36A1AC0C95C006BBC11 /* Tests.swift */; };
- EECDB3951AC0CBFF006BBC11 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB35E1AC0C95C006BBC11 /* Constraint.swift */; };
- EECDB3961AC0CBFF006BBC11 /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB35F1AC0C95C006BBC11 /* ConstraintAttributes.swift */; };
- EECDB3971AC0CBFF006BBC11 /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB3601AC0C95C006BBC11 /* ConstraintItem.swift */; };
- EECDB3981AC0CBFF006BBC11 /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB3611AC0C95C006BBC11 /* ConstraintMaker.swift */; };
- EECDB3991AC0CBFF006BBC11 /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB3621AC0C95C006BBC11 /* ConstraintRelation.swift */; };
- EECDB39A1AC0CBFF006BBC11 /* EdgeInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB3631AC0C95C006BBC11 /* EdgeInsets.swift */; };
- EECDB39B1AC0CBFF006BBC11 /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB3651AC0C95C006BBC11 /* LayoutConstraint.swift */; };
- EECDB39C1AC0CBFF006BBC11 /* View+Snap.swift in Sources */ = {isa = PBXBuildFile; fileRef = EECDB3671AC0C95C006BBC11 /* View+Snap.swift */; };
- EECDB39D1AC0CC03006BBC11 /* Snap.h in Headers */ = {isa = PBXBuildFile; fileRef = EECDB3661AC0C95C006BBC11 /* Snap.h */; settings = {ATTRIBUTES = (Public, ); }; };
- EEFCF32C1AD910B900A425FA /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEFCF32B1AD910B900A425FA /* Debugging.swift */; };
- EEFCF32D1AD9250C00A425FA /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEFCF32B1AD910B900A425FA /* Debugging.swift */; };
- EEFCF32F1AD926AE00A425FA /* Snap.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEFCF32E1AD926AE00A425FA /* Snap.swift */; };
- EEFCF3301AD92C2200A425FA /* Snap.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEFCF32E1AD926AE00A425FA /* Snap.swift */; };
- EEFCF3321AD9432400A425FA /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEFCF3311AD9432400A425FA /* ConstraintDescription.swift */; };
- EEFCF3331AD9432400A425FA /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEFCF3311AD9432400A425FA /* ConstraintDescription.swift */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- EECDB3861AC0C9D4006BBC11 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = DDC9FD8D1981B4DD009612C7 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = EECDB3791AC0C9D4006BBC11;
- remoteInfo = "Snap OSX";
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
- EE94F6081AC0F10A008767FF /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
- EE94F60A1AC0F10F008767FF /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/AppKit.framework; sourceTree = DEVELOPER_DIR; };
- EEBCC9D819CC627D0083B827 /* Snap.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Snap.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- EEBCC9E219CC627E0083B827 /* Snap iOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Snap iOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
- EECDB35E1AC0C95C006BBC11 /* Constraint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constraint.swift; sourceTree = ""; };
- EECDB35F1AC0C95C006BBC11 /* ConstraintAttributes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstraintAttributes.swift; sourceTree = ""; };
- EECDB3601AC0C95C006BBC11 /* ConstraintItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstraintItem.swift; sourceTree = ""; };
- EECDB3611AC0C95C006BBC11 /* ConstraintMaker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstraintMaker.swift; sourceTree = ""; };
- EECDB3621AC0C95C006BBC11 /* ConstraintRelation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstraintRelation.swift; sourceTree = ""; };
- EECDB3631AC0C95C006BBC11 /* EdgeInsets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EdgeInsets.swift; sourceTree = ""; };
- EECDB3641AC0C95C006BBC11 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- EECDB3651AC0C95C006BBC11 /* LayoutConstraint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LayoutConstraint.swift; sourceTree = ""; };
- EECDB3661AC0C95C006BBC11 /* Snap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Snap.h; sourceTree = ""; };
- EECDB3671AC0C95C006BBC11 /* View+Snap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+Snap.swift"; sourceTree = ""; };
- EECDB3691AC0C95C006BBC11 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- EECDB36A1AC0C95C006BBC11 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; };
- EECDB37A1AC0C9D4006BBC11 /* Snap.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Snap.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- EECDB3841AC0C9D4006BBC11 /* Snap OSX Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Snap OSX Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
- EEFCF32B1AD910B900A425FA /* Debugging.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Debugging.swift; sourceTree = ""; };
- EEFCF32E1AD926AE00A425FA /* Snap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Snap.swift; sourceTree = ""; };
- EEFCF3311AD9432400A425FA /* ConstraintDescription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConstraintDescription.swift; sourceTree = ""; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- EE94F60D1AC0F132008767FF /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- EE94F6111AC0F146008767FF /* Snap.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- EE94F60E1AC0F136008767FF /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- EE94F6101AC0F143008767FF /* Snap.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- EEBCC9D419CC627D0083B827 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- EE94F6091AC0F10A008767FF /* UIKit.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- EECDB3761AC0C9D4006BBC11 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- EE94F60B1AC0F10F008767FF /* AppKit.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- DDC9FD8C1981B4DD009612C7 = {
- isa = PBXGroup;
- children = (
- EECDB35D1AC0C95C006BBC11 /* Source */,
- EE94F60C1AC0F113008767FF /* Frameworks */,
- DDC9FD961981B4DD009612C7 /* Products */,
- );
- sourceTree = "";
- };
- DDC9FD961981B4DD009612C7 /* Products */ = {
- isa = PBXGroup;
- children = (
- EEBCC9D819CC627D0083B827 /* Snap.framework */,
- EEBCC9E219CC627E0083B827 /* Snap iOS Tests.xctest */,
- EECDB37A1AC0C9D4006BBC11 /* Snap.framework */,
- EECDB3841AC0C9D4006BBC11 /* Snap OSX Tests.xctest */,
- );
- name = Products;
- sourceTree = "";
- };
- EE94F60C1AC0F113008767FF /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- EE94F60A1AC0F10F008767FF /* AppKit.framework */,
- EE94F6081AC0F10A008767FF /* UIKit.framework */,
- );
- name = Frameworks;
- sourceTree = "";
- };
- EECDB35D1AC0C95C006BBC11 /* Source */ = {
- isa = PBXGroup;
- children = (
- EECDB3661AC0C95C006BBC11 /* Snap.h */,
- EEFCF32E1AD926AE00A425FA /* Snap.swift */,
- EECDB35E1AC0C95C006BBC11 /* Constraint.swift */,
- EEFCF3311AD9432400A425FA /* ConstraintDescription.swift */,
- EECDB3611AC0C95C006BBC11 /* ConstraintMaker.swift */,
- EECDB3671AC0C95C006BBC11 /* View+Snap.swift */,
- EECDB3601AC0C95C006BBC11 /* ConstraintItem.swift */,
- EECDB3631AC0C95C006BBC11 /* EdgeInsets.swift */,
- EECDB3651AC0C95C006BBC11 /* LayoutConstraint.swift */,
- EEFCF32B1AD910B900A425FA /* Debugging.swift */,
- EECDB3621AC0C95C006BBC11 /* ConstraintRelation.swift */,
- EECDB35F1AC0C95C006BBC11 /* ConstraintAttributes.swift */,
- EECDB36B1AC0C967006BBC11 /* Supporting Files */,
- EECDB3681AC0C95C006BBC11 /* Tests */,
- );
- path = Source;
- sourceTree = "";
- };
- EECDB3681AC0C95C006BBC11 /* Tests */ = {
- isa = PBXGroup;
- children = (
- EECDB3691AC0C95C006BBC11 /* Info.plist */,
- EECDB36A1AC0C95C006BBC11 /* Tests.swift */,
- );
- name = Tests;
- path = ../Tests;
- sourceTree = "";
- };
- EECDB36B1AC0C967006BBC11 /* Supporting Files */ = {
- isa = PBXGroup;
- children = (
- EECDB3641AC0C95C006BBC11 /* Info.plist */,
- );
- name = "Supporting Files";
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- EEBCC9D519CC627D0083B827 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- EECDB3741AC0C9B6006BBC11 /* Snap.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- EECDB3771AC0C9D4006BBC11 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- EECDB39D1AC0CC03006BBC11 /* Snap.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
- EEBCC9D719CC627D0083B827 /* Snap iOS */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = EEBCC9E819CC627E0083B827 /* Build configuration list for PBXNativeTarget "Snap iOS" */;
- buildPhases = (
- EEBCC9D319CC627D0083B827 /* Sources */,
- EEBCC9D419CC627D0083B827 /* Frameworks */,
- EEBCC9D519CC627D0083B827 /* Headers */,
- EEBCC9D619CC627D0083B827 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "Snap iOS";
- productName = Snap;
- productReference = EEBCC9D819CC627D0083B827 /* Snap.framework */;
- productType = "com.apple.product-type.framework";
- };
- EEBCC9E119CC627D0083B827 /* Snap iOS Tests */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = EEBCC9EB19CC627E0083B827 /* Build configuration list for PBXNativeTarget "Snap iOS Tests" */;
- buildPhases = (
- EEBCC9DE19CC627D0083B827 /* Sources */,
- EE94F60E1AC0F136008767FF /* Frameworks */,
- EEBCC9E019CC627D0083B827 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "Snap iOS Tests";
- productName = SnapTests;
- productReference = EEBCC9E219CC627E0083B827 /* Snap iOS Tests.xctest */;
- productType = "com.apple.product-type.bundle.unit-test";
- };
- EECDB3791AC0C9D4006BBC11 /* Snap OSX */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = EECDB38D1AC0C9D4006BBC11 /* Build configuration list for PBXNativeTarget "Snap OSX" */;
- buildPhases = (
- EECDB3751AC0C9D4006BBC11 /* Sources */,
- EECDB3761AC0C9D4006BBC11 /* Frameworks */,
- EECDB3771AC0C9D4006BBC11 /* Headers */,
- EECDB3781AC0C9D4006BBC11 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "Snap OSX";
- productName = "Snap OSX";
- productReference = EECDB37A1AC0C9D4006BBC11 /* Snap.framework */;
- productType = "com.apple.product-type.framework";
- };
- EECDB3831AC0C9D4006BBC11 /* Snap OSX Tests */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = EECDB3901AC0C9D4006BBC11 /* Build configuration list for PBXNativeTarget "Snap OSX Tests" */;
- buildPhases = (
- EECDB3801AC0C9D4006BBC11 /* Sources */,
- EE94F60D1AC0F132008767FF /* Frameworks */,
- EECDB3821AC0C9D4006BBC11 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- EECDB3871AC0C9D4006BBC11 /* PBXTargetDependency */,
- );
- name = "Snap OSX Tests";
- productName = "Snap OSXTests";
- productReference = EECDB3841AC0C9D4006BBC11 /* Snap OSX Tests.xctest */;
- productType = "com.apple.product-type.bundle.unit-test";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- DDC9FD8D1981B4DD009612C7 /* Project object */ = {
- isa = PBXProject;
- attributes = {
- LastUpgradeCheck = 0600;
- ORGANIZATIONNAME = "Masonry Team";
- TargetAttributes = {
- EEBCC9D719CC627D0083B827 = {
- CreatedOnToolsVersion = 6.0;
- };
- EEBCC9E119CC627D0083B827 = {
- CreatedOnToolsVersion = 6.0;
- };
- EECDB3791AC0C9D4006BBC11 = {
- CreatedOnToolsVersion = 6.2;
- };
- EECDB3831AC0C9D4006BBC11 = {
- CreatedOnToolsVersion = 6.2;
- };
- };
- };
- buildConfigurationList = DDC9FD901981B4DD009612C7 /* Build configuration list for PBXProject "Snap" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- );
- mainGroup = DDC9FD8C1981B4DD009612C7;
- productRefGroup = DDC9FD961981B4DD009612C7 /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- EEBCC9D719CC627D0083B827 /* Snap iOS */,
- EECDB3791AC0C9D4006BBC11 /* Snap OSX */,
- EEBCC9E119CC627D0083B827 /* Snap iOS Tests */,
- EECDB3831AC0C9D4006BBC11 /* Snap OSX Tests */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- EEBCC9D619CC627D0083B827 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- EEBCC9E019CC627D0083B827 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- EECDB3781AC0C9D4006BBC11 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- EECDB3821AC0C9D4006BBC11 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- EEBCC9D319CC627D0083B827 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- EECDB36C1AC0C9A6006BBC11 /* Constraint.swift in Sources */,
- EEFCF32F1AD926AE00A425FA /* Snap.swift in Sources */,
- EEFCF32C1AD910B900A425FA /* Debugging.swift in Sources */,
- EECDB3701AC0C9A6006BBC11 /* ConstraintRelation.swift in Sources */,
- EEFCF3321AD9432400A425FA /* ConstraintDescription.swift in Sources */,
- EECDB3731AC0C9A6006BBC11 /* View+Snap.swift in Sources */,
- EECDB3711AC0C9A6006BBC11 /* EdgeInsets.swift in Sources */,
- EECDB36F1AC0C9A6006BBC11 /* ConstraintMaker.swift in Sources */,
- EECDB36D1AC0C9A6006BBC11 /* ConstraintAttributes.swift in Sources */,
- EECDB3721AC0C9A6006BBC11 /* LayoutConstraint.swift in Sources */,
- EECDB36E1AC0C9A6006BBC11 /* ConstraintItem.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- EEBCC9DE19CC627D0083B827 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- EECDB3931AC0CB52006BBC11 /* Tests.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- EECDB3751AC0C9D4006BBC11 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- EECDB3951AC0CBFF006BBC11 /* Constraint.swift in Sources */,
- EEFCF3301AD92C2200A425FA /* Snap.swift in Sources */,
- EEFCF32D1AD9250C00A425FA /* Debugging.swift in Sources */,
- EECDB3991AC0CBFF006BBC11 /* ConstraintRelation.swift in Sources */,
- EEFCF3331AD9432400A425FA /* ConstraintDescription.swift in Sources */,
- EECDB39C1AC0CBFF006BBC11 /* View+Snap.swift in Sources */,
- EECDB39A1AC0CBFF006BBC11 /* EdgeInsets.swift in Sources */,
- EECDB3981AC0CBFF006BBC11 /* ConstraintMaker.swift in Sources */,
- EECDB3961AC0CBFF006BBC11 /* ConstraintAttributes.swift in Sources */,
- EECDB39B1AC0CBFF006BBC11 /* LayoutConstraint.swift in Sources */,
- EECDB3971AC0CBFF006BBC11 /* ConstraintItem.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- EECDB3801AC0C9D4006BBC11 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- EECDB3941AC0CB52006BBC11 /* Tests.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- EECDB3871AC0C9D4006BBC11 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = EECDB3791AC0C9D4006BBC11 /* Snap OSX */;
- targetProxy = EECDB3861AC0C9D4006BBC11 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- DDC9FDAF1981B4DD009612C7 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_SYMBOLS_PRIVATE_EXTERN = NO;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 7.0;
- MACOSX_DEPLOYMENT_TARGET = 10.9;
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- SDKROOT = iphoneos;
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = Debug;
- };
- DDC9FDB01981B4DD009612C7 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = YES;
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 7.0;
- MACOSX_DEPLOYMENT_TARGET = 10.9;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- };
- name = Release;
- };
- EEBCC9E919CC627E0083B827 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- APPLICATION_EXTENSION_API_ONLY = YES;
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_NAME = Snap;
- SKIP_INSTALL = YES;
- SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "";
- };
- name = Debug;
- };
- EEBCC9EA19CC627E0083B827 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- APPLICATION_EXTENSION_API_ONLY = YES;
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_NAME = Snap;
- SKIP_INSTALL = YES;
- SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "";
- };
- name = Release;
- };
- EEBCC9EC19CC627E0083B827 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- FRAMEWORK_SEARCH_PATHS = (
- "$(SDKROOT)/Developer/Library/Frameworks",
- "$(inherited)",
- );
- INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_NAME = "$(TARGET_NAME)";
- };
- name = Debug;
- };
- EEBCC9ED19CC627E0083B827 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- FRAMEWORK_SEARCH_PATHS = (
- "$(SDKROOT)/Developer/Library/Frameworks",
- "$(inherited)",
- );
- INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- PRODUCT_NAME = "$(TARGET_NAME)";
- };
- name = Release;
- };
- EECDB38E1AC0C9D4006BBC11 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
- CURRENT_PROJECT_VERSION = 1;
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- FRAMEWORK_VERSION = A;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
- MACOSX_DEPLOYMENT_TARGET = 10.10;
- PRODUCT_NAME = Snap;
- SDKROOT = macosx;
- SKIP_INSTALL = YES;
- SUPPORTED_PLATFORMS = macosx;
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "";
- };
- name = Debug;
- };
- EECDB38F1AC0C9D4006BBC11 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
- CURRENT_PROJECT_VERSION = 1;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- DEFINES_MODULE = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- DYLIB_INSTALL_NAME_BASE = "@rpath";
- FRAMEWORK_VERSION = A;
- INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
- INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
- MACOSX_DEPLOYMENT_TARGET = 10.10;
- PRODUCT_NAME = Snap;
- SDKROOT = macosx;
- SKIP_INSTALL = YES;
- SUPPORTED_PLATFORMS = macosx;
- VERSIONING_SYSTEM = "apple-generic";
- VERSION_INFO_PREFIX = "";
- };
- name = Release;
- };
- EECDB3911AC0C9D4006BBC11 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
- FRAMEWORK_SEARCH_PATHS = (
- "$(DEVELOPER_FRAMEWORKS_DIR)",
- "$(inherited)",
- );
- INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
- MACOSX_DEPLOYMENT_TARGET = 10.10;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SDKROOT = macosx;
- };
- name = Debug;
- };
- EECDB3921AC0C9D4006BBC11 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COMBINE_HIDPI_IMAGES = YES;
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- FRAMEWORK_SEARCH_PATHS = (
- "$(DEVELOPER_FRAMEWORKS_DIR)",
- "$(inherited)",
- );
- INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
- MACOSX_DEPLOYMENT_TARGET = 10.10;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SDKROOT = macosx;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- DDC9FD901981B4DD009612C7 /* Build configuration list for PBXProject "Snap" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- DDC9FDAF1981B4DD009612C7 /* Debug */,
- DDC9FDB01981B4DD009612C7 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- EEBCC9E819CC627E0083B827 /* Build configuration list for PBXNativeTarget "Snap iOS" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- EEBCC9E919CC627E0083B827 /* Debug */,
- EEBCC9EA19CC627E0083B827 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- EEBCC9EB19CC627E0083B827 /* Build configuration list for PBXNativeTarget "Snap iOS Tests" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- EEBCC9EC19CC627E0083B827 /* Debug */,
- EEBCC9ED19CC627E0083B827 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- EECDB38D1AC0C9D4006BBC11 /* Build configuration list for PBXNativeTarget "Snap OSX" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- EECDB38E1AC0C9D4006BBC11 /* Debug */,
- EECDB38F1AC0C9D4006BBC11 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- EECDB3901AC0C9D4006BBC11 /* Build configuration list for PBXNativeTarget "Snap OSX Tests" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- EECDB3911AC0C9D4006BBC11 /* Debug */,
- EECDB3921AC0C9D4006BBC11 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = DDC9FD8D1981B4DD009612C7 /* Project object */;
-}
diff --git a/Snap.xcodeproj/xcshareddata/xcschemes/Snap OSX.xcscheme b/Snap.xcodeproj/xcshareddata/xcschemes/Snap OSX.xcscheme
deleted file mode 100644
index cf8990d..0000000
--- a/Snap.xcodeproj/xcshareddata/xcschemes/Snap OSX.xcscheme
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Snap.xcodeproj/xcshareddata/xcschemes/Snap iOS.xcscheme b/Snap.xcodeproj/xcshareddata/xcschemes/Snap iOS.xcscheme
deleted file mode 100644
index f33a6f1..0000000
--- a/Snap.xcodeproj/xcshareddata/xcschemes/Snap iOS.xcscheme
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Snap.xcworkspace/contents.xcworkspacedata b/Snap.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index 8ae6f15..0000000
--- a/Snap.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
diff --git a/Snap.xcworkspace/xcshareddata/Snap.xccheckout b/Snap.xcworkspace/xcshareddata/Snap.xccheckout
deleted file mode 100644
index 19c212e..0000000
--- a/Snap.xcworkspace/xcshareddata/Snap.xccheckout
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
- IDESourceControlProjectFavoriteDictionaryKey
-
- IDESourceControlProjectIdentifier
- A81B1AD2-2D5B-4BB2-AAA6-86A53AADC474
- IDESourceControlProjectName
- Snap
- IDESourceControlProjectOriginsDictionary
-
- 3AF18F9C6F5D633BAA0B3F935459E0C777C82047
- github.com:Masonry/Snap.git
-
- IDESourceControlProjectPath
- Snap.xcworkspace
- IDESourceControlProjectRelativeInstallPathDictionary
-
- 3AF18F9C6F5D633BAA0B3F935459E0C777C82047
- ..
-
- IDESourceControlProjectURL
- github.com:Masonry/Snap.git
- IDESourceControlProjectVersion
- 111
- IDESourceControlProjectWCCIdentifier
- 3AF18F9C6F5D633BAA0B3F935459E0C777C82047
- IDESourceControlProjectWCConfigurations
-
-
- IDESourceControlRepositoryExtensionIdentifierKey
- public.vcs.git
- IDESourceControlWCCIdentifierKey
- 3AF18F9C6F5D633BAA0B3F935459E0C777C82047
- IDESourceControlWCCName
- Snap
-
-
-
-
diff --git a/Snap.xcworkspace/xcshareddata/Snappy.xccheckout b/Snap.xcworkspace/xcshareddata/Snappy.xccheckout
deleted file mode 100644
index 91c9f46..0000000
--- a/Snap.xcworkspace/xcshareddata/Snappy.xccheckout
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
- IDESourceControlProjectFavoriteDictionaryKey
-
- IDESourceControlProjectIdentifier
- FDF6DE8D-A35D-47D4-8CB6-ACB35050F0D0
- IDESourceControlProjectName
- Snap
- IDESourceControlProjectOriginsDictionary
-
- 3AF18F9C6F5D633BAA0B3F935459E0C777C82047
- github.com:Masonry/Snap.git
-
- IDESourceControlProjectPath
- Snap.xcodeproj
- IDESourceControlProjectRelativeInstallPathDictionary
-
- 3AF18F9C6F5D633BAA0B3F935459E0C777C82047
- ../..
-
- IDESourceControlProjectURL
- github.com:Masonry/Snap.git
- IDESourceControlProjectVersion
- 111
- IDESourceControlProjectWCCIdentifier
- 3AF18F9C6F5D633BAA0B3F935459E0C777C82047
- IDESourceControlProjectWCConfigurations
-
-
- IDESourceControlRepositoryExtensionIdentifierKey
- public.vcs.git
- IDESourceControlWCCIdentifierKey
- 3AF18F9C6F5D633BAA0B3F935459E0C777C82047
- IDESourceControlWCCName
- Snap
-
-
-
-
diff --git a/Source/Constraint.swift b/Source/Constraint.swift
deleted file mode 100644
index e3aefd4..0000000
--- a/Source/Constraint.swift
+++ /dev/null
@@ -1,465 +0,0 @@
-//
-// Snap
-//
-// Copyright (c) 2011-2015 Masonry Team - https://github.com/Masonry
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#if os(iOS)
-import UIKit
-#else
-import AppKit
-#endif
-
-/**
- Used to expose API's for a Constraint
-*/
-public protocol Constraint: class {
-
- func install() -> [LayoutConstraint]
- func uninstall()
- func activate()
- func deactivate()
-
- func updateOffset(amount: Float) -> Void
- func updateOffset(amount: Double) -> Void
- func updateOffset(amount: CGFloat) -> Void
- func updateOffset(amount: Int) -> Void
- func updateOffset(amount: UInt) -> Void
- func updateOffset(amount: CGPoint) -> Void
- func updateOffset(amount: CGSize) -> Void
- func updateOffset(amount: EdgeInsets) -> Void
-
- func updateInsets(amount: EdgeInsets) -> Void
-
- func updatePriority(priority: Float) -> Void
- func updatePriority(priority: Double) -> Void
- func updatePriority(priority: CGFloat) -> Void
- func updatePriority(priority: UInt) -> Void
- func updatePriority(priority: Int) -> Void
- func updatePriorityRequired() -> Void
- func updatePriorityHigh() -> Void
- func updatePriorityMedium() -> Void
- func updatePriorityLow() -> Void
-
-}
-
-/**
- Used internally to implement a ConcreteConstraint
-*/
-internal class ConcreteConstraint: Constraint {
-
- internal func updateOffset(amount: Float) -> Void {
- self.constant = amount
- }
- internal func updateOffset(amount: Double) -> Void {
- self.updateOffset(Float(amount))
- }
- internal func updateOffset(amount: CGFloat) -> Void {
- self.updateOffset(Float(amount))
- }
- internal func updateOffset(amount: Int) -> Void {
- self.updateOffset(Float(amount))
- }
- internal func updateOffset(amount: UInt) -> Void {
- self.updateOffset(Float(amount))
- }
- internal func updateOffset(amount: CGPoint) -> Void {
- self.constant = amount
- }
- internal func updateOffset(amount: CGSize) -> Void {
- self.constant = amount
- }
- internal func updateOffset(amount: EdgeInsets) -> Void {
- self.constant = amount
- }
-
- internal func updateInsets(amount: EdgeInsets) -> Void {
- self.constant = EdgeInsets(top: amount.top, left: amount.left, bottom: -amount.bottom, right: -amount.right)
- }
-
- internal func updatePriority(priority: Float) -> Void {
- self.priority = priority
- }
- internal func updatePriority(priority: Double) -> Void {
- self.updatePriority(Float(priority))
- }
- internal func updatePriority(priority: CGFloat) -> Void {
- self.updatePriority(Float(priority))
- }
- internal func updatePriority(priority: UInt) -> Void {
- self.updatePriority(Float(priority))
- }
- internal func updatePriority(priority: Int) -> Void {
- self.updatePriority(Float(priority))
- }
- internal func updatePriorityRequired() -> Void {
- self.updatePriority(Float(1000.0))
- }
- internal func updatePriorityHigh() -> Void {
- self.updatePriority(Float(750.0))
- }
- internal func updatePriorityMedium() -> Void {
- #if os(iOS)
- self.updatePriority(Float(500.0))
- #else
- self.updatePriority(Float(501.0))
- #endif
- }
- internal func updatePriorityLow() -> Void {
- self.updatePriority(Float(250.0))
- }
-
- internal func install() -> [LayoutConstraint] {
- return self.installOnView(updateExisting: false)
- }
-
- internal func uninstall() {
- self.uninstallFromView()
- }
-
- internal func activate() {
- if NSLayoutConstraint.respondsToSelector("activateConstraints:") && self.installInfo != nil {
- let layoutConstraints = self.installInfo!.layoutConstraints.allObjects as! [LayoutConstraint]
- if layoutConstraints.count > 0 {
- NSLayoutConstraint.activateConstraints(layoutConstraints)
- }
- } else {
- self.install()
- }
- }
-
- internal func deactivate() {
- if NSLayoutConstraint.respondsToSelector("deactivateConstraints:") && self.installInfo != nil {
- let layoutConstraints = self.installInfo!.layoutConstraints.allObjects as! [LayoutConstraint]
- if layoutConstraints.count > 0 {
- NSLayoutConstraint.deactivateConstraints(layoutConstraints)
- }
- } else {
- self.uninstall()
- }
- }
-
- private let fromItem: ConstraintItem
- private let toItem: ConstraintItem
- private let relation: ConstraintRelation
- private let multiplier: Float
- private var constant: Any {
- didSet {
- if let installInfo = self.installInfo {
- for layoutConstraint in installInfo.layoutConstraints.allObjects as! [LayoutConstraint] {
- let attribute = (layoutConstraint.secondAttribute == .NotAnAttribute) ? layoutConstraint.firstAttribute : layoutConstraint.secondAttribute
- layoutConstraint.constant = attribute.snp_constantForValue(self.constant)
- }
- }
- }
- }
- private var priority: Float {
- didSet {
- if let installInfo = self.installInfo {
- for layoutConstraint in installInfo.layoutConstraints.allObjects as! [LayoutConstraint] {
- layoutConstraint.priority = self.priority
- }
- }
- }
- }
-
- private var installInfo: ConcreteConstraintInstallInfo? = nil
-
- internal init(fromItem: ConstraintItem, toItem: ConstraintItem, relation: ConstraintRelation, constant: Any, multiplier: Float, priority: Float) {
- self.fromItem = fromItem
- self.toItem = toItem
- self.relation = relation
- self.constant = constant
- self.multiplier = multiplier
- self.priority = priority
- }
-
- internal func installOnView(updateExisting: Bool = false) -> [LayoutConstraint] {
- var installOnView: View? = nil
- if self.toItem.view != nil {
- installOnView = closestCommonSuperviewBetween(self.fromItem.view, self.toItem.view)
- if installOnView == nil {
- NSException(name: "Cannot Install Constraint", reason: "No common superview between views", userInfo: nil).raise()
- return []
- }
- } else {
- installOnView = self.fromItem.view?.superview
- if installOnView == nil {
- if self.fromItem.attributes == ConstraintAttributes.Width || self.fromItem.attributes == ConstraintAttributes.Height {
- installOnView = self.fromItem.view
- }
-
- if installOnView == nil {
- NSException(name: "Cannot Install Constraint", reason: "Missing superview", userInfo: nil).raise()
- return []
- }
- }
- }
-
- if let installedOnView = self.installInfo?.view {
- if installedOnView != installOnView {
- NSException(name: "Cannot Install Constraint", reason: "Already installed on different view.", userInfo: nil).raise()
- return []
- }
- return self.installInfo?.layoutConstraints.allObjects as? [LayoutConstraint] ?? []
- }
-
- var newLayoutConstraints = [LayoutConstraint]()
- let layoutFromAttributes = self.fromItem.attributes.layoutAttributes
- let layoutToAttributes = self.toItem.attributes.layoutAttributes
-
- // get layout from
- let layoutFrom: View? = self.fromItem.view
-
- // get layout relation
- let layoutRelation: NSLayoutRelation = self.relation.layoutRelation
-
- for layoutFromAttribute in layoutFromAttributes {
- // get layout to attribute
- let layoutToAttribute = (layoutToAttributes.count > 0) ? layoutToAttributes[0] : layoutFromAttribute
-
- // get layout constant
- var layoutConstant: CGFloat = layoutToAttribute.snp_constantForValue(self.constant)
-
- // get layout to
- var layoutTo: View? = self.toItem.view
- if layoutTo == nil && layoutToAttribute != .Width && layoutToAttribute != .Height {
- layoutTo = installOnView
- }
-
- // create layout constraint
- let layoutConstraint = LayoutConstraint(
- item: layoutFrom!,
- attribute: layoutFromAttribute,
- relatedBy: layoutRelation,
- toItem: layoutTo,
- attribute: layoutToAttribute,
- multiplier: CGFloat(self.multiplier),
- constant: layoutConstant)
-
- // set priority
- layoutConstraint.priority = self.priority
-
- // set constraint
- layoutConstraint.snp_constraint = self
-
- newLayoutConstraints.append(layoutConstraint)
- }
-
- // special logic for updating
- if updateExisting {
- // get existing constraints for this view
- let existingLayoutConstraints = reverse(layoutFrom!.snp_installedLayoutConstraints)
-
- // array that will contain only new layout constraints to keep
- var newLayoutConstraintsToKeep = [LayoutConstraint]()
-
- // begin looping
- for layoutConstraint in newLayoutConstraints {
- // layout constraint that should be updated
- var updateLayoutConstraint: LayoutConstraint? = nil
-
- // loop through existing and check for match
- for existingLayoutConstraint in existingLayoutConstraints {
- if existingLayoutConstraint == layoutConstraint {
- updateLayoutConstraint = existingLayoutConstraint
- break
- }
- }
-
- // if we have existing one lets just update the constant
- if updateLayoutConstraint != nil {
- updateLayoutConstraint!.constant = layoutConstraint.constant
- }
- // otherwise add this layout constraint to new keep list
- else {
- newLayoutConstraintsToKeep.append(layoutConstraint)
- }
- }
-
- // set constraints to only new ones
- newLayoutConstraints = newLayoutConstraintsToKeep
- }
-
- // add constraints
- installOnView!.addConstraints(newLayoutConstraints)
-
- // set install info
- self.installInfo = ConcreteConstraintInstallInfo(view: installOnView, layoutConstraints: NSHashTable.weakObjectsHashTable())
-
- // store which layout constraints are installed for this constraint
- for layoutConstraint in newLayoutConstraints {
- self.installInfo!.layoutConstraints.addObject(layoutConstraint)
- }
-
- // store the layout constraints against the layout from view
- layoutFrom!.snp_installedLayoutConstraints += newLayoutConstraints
-
- // return the new constraints
- return newLayoutConstraints
- }
-
- internal func uninstallFromView() {
- if let installInfo = self.installInfo,
- let installedLayoutConstraints = installInfo.layoutConstraints.allObjects as? [LayoutConstraint] {
-
- if installedLayoutConstraints.count > 0 {
-
- if let installedOnView = installInfo.view {
- // remove the constraints from the UIView's storage
- installedOnView.removeConstraints(installedLayoutConstraints)
- }
-
- // remove the constraints from the from item view
- if let fromView = self.fromItem.view {
- fromView.snp_installedLayoutConstraints = fromView.snp_installedLayoutConstraints.filter {
- return !contains(installedLayoutConstraints, $0)
- }
- }
- }
-
- }
- self.installInfo = nil
- }
-
-}
-
-private struct ConcreteConstraintInstallInfo {
-
- weak var view: View? = nil
- let layoutConstraints: NSHashTable
-
-}
-
-private extension NSLayoutAttribute {
-
- private func snp_constantForValue(value: Any?) -> CGFloat {
- // Float
- if let float = value as? Float {
- return CGFloat(float)
- }
- // Double
- else if let double = value as? Double {
- return CGFloat(double)
- }
- // UInt
- else if let int = value as? Int {
- return CGFloat(int)
- }
- // Int
- else if let uint = value as? UInt {
- return CGFloat(uint)
- }
- // CGFloat
- else if let float = value as? CGFloat {
- return float
- }
- // CGSize
- else if let size = value as? CGSize {
- if self == .Width {
- return size.width
- } else if self == .Height {
- return size.height
- }
- }
- // CGPoint
- else if let point = value as? CGPoint {
- #if os(iOS)
- switch self {
- case .Left, .CenterX, .LeftMargin, .CenterXWithinMargins: return point.x
- case .Top, .CenterY, .TopMargin, .CenterYWithinMargins, .Baseline, .FirstBaseline: return point.y
- case .Right, .RightMargin: return point.x
- case .Bottom, .BottomMargin: return point.y
- case .Leading, .LeadingMargin: return point.x
- case .Trailing, .TrailingMargin: return point.x
- case .Width, .Height, .NotAnAttribute: return CGFloat(0)
- }
- #else
- switch self {
- case .Left, .CenterX: return point.x
- case .Top, .CenterY, .Baseline: return point.y
- case .Right: return point.x
- case .Bottom: return point.y
- case .Leading: return point.x
- case .Trailing: return point.x
- case .Width, .Height, .NotAnAttribute: return CGFloat(0)
- }
- #endif
- }
- // EdgeInsets
- else if let insets = value as? EdgeInsets {
- #if os(iOS)
- switch self {
- case .Left, .CenterX, .LeftMargin, .CenterXWithinMargins: return insets.left
- case .Top, .CenterY, .TopMargin, .CenterYWithinMargins, .Baseline, .FirstBaseline: return insets.top
- case .Right, .RightMargin: return insets.right
- case .Bottom, .BottomMargin: return insets.bottom
- case .Leading, .LeadingMargin: return (Config.interfaceLayoutDirection == .LeftToRight) ? insets.left : -insets.right
- case .Trailing, .TrailingMargin: return (Config.interfaceLayoutDirection == .LeftToRight) ? insets.right : -insets.left
- case .Width, .Height, .NotAnAttribute: return CGFloat(0)
- }
- #else
- switch self {
- case .Left, .CenterX: return insets.left
- case .Top, .CenterY, .Baseline: return insets.top
- case .Right: return insets.right
- case .Bottom: return insets.bottom
- case .Leading, .LeadingMargin: return (Config.interfaceLayoutDirection == .LeftToRight) ? insets.left : -insets.right
- case .Trailing, .TrailingMargin: return (Config.interfaceLayoutDirection == .LeftToRight) ? insets.right : -insets.left
- case .Width, .Height, .NotAnAttribute: return CGFloat(0)
- }
- #endif
- }
-
- return CGFloat(0);
- }
-}
-
-private func closestCommonSuperviewBetween(fromView: View?, toView: View?) -> View? {
- var views = Set()
- var fromView = fromView
- var toView = toView
- do {
- if let view = toView {
- if views.contains(view) {
- return view
- }
- views.insert(view)
- toView = view.superview
- }
- if let view = fromView {
- if views.contains(view) {
- return view
- }
- views.insert(view)
- fromView = view.superview
- }
- } while (fromView != nil || toView != nil)
-
- return nil
-}
-
-private func ==(left: ConcreteConstraint, right: ConcreteConstraint) -> Bool {
- return (left.fromItem == right.fromItem &&
- left.toItem == right.toItem &&
- left.relation == right.relation &&
- left.multiplier == right.multiplier &&
- left.priority == right.priority)
-}
\ No newline at end of file
diff --git a/Source/ConstraintAttributes.swift b/Source/ConstraintAttributes.swift
deleted file mode 100644
index 25dd209..0000000
--- a/Source/ConstraintAttributes.swift
+++ /dev/null
@@ -1,167 +0,0 @@
-//
-// Snap
-//
-// Copyright (c) 2011-2015 Masonry Team - https://github.com/Masonry
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#if os(iOS)
-import UIKit
-#else
-import AppKit
-#endif
-
-/**
- Used to define `NSLayoutAttributes` in a more concise and composite manner
-*/
-internal struct ConstraintAttributes: RawOptionSetType, BooleanType {
-
- internal init(rawValue: UInt) {
- self.rawValue = rawValue
- }
- internal init(_ rawValue: UInt) {
- self.init(rawValue: rawValue)
- }
- internal init(nilLiteral: ()) {
- self.rawValue = 0
- }
-
- internal private(set) var rawValue: UInt
- internal static var allZeros: ConstraintAttributes { return self(0) }
- internal static func convertFromNilLiteral() -> ConstraintAttributes { return self(0) }
- internal var boolValue: Bool { return self.rawValue != 0 }
-
- internal func toRaw() -> UInt { return self.rawValue }
- internal static func fromRaw(raw: UInt) -> ConstraintAttributes? { return self(raw) }
- internal static func fromMask(raw: UInt) -> ConstraintAttributes { return self(raw) }
-
- // normal
-
- internal static var None: ConstraintAttributes { return self(0) }
- internal static var Left: ConstraintAttributes { return self(1) }
- internal static var Top: ConstraintAttributes { return self(2) }
- internal static var Right: ConstraintAttributes { return self(4) }
- internal static var Bottom: ConstraintAttributes { return self(8) }
- internal static var Leading: ConstraintAttributes { return self(16) }
- internal static var Trailing: ConstraintAttributes { return self(32) }
- internal static var Width: ConstraintAttributes { return self(64) }
- internal static var Height: ConstraintAttributes { return self(128) }
- internal static var CenterX: ConstraintAttributes { return self(256) }
- internal static var CenterY: ConstraintAttributes { return self(512) }
- internal static var Baseline: ConstraintAttributes { return self(1024) }
-
- #if os(iOS)
- internal static var FirstBaseline: ConstraintAttributes { return self(2048) }
- internal static var LeftMargin: ConstraintAttributes { return self(4096) }
- internal static var RightMargin: ConstraintAttributes { return self(8192) }
- internal static var TopMargin: ConstraintAttributes { return self(16384) }
- internal static var BottomMargin: ConstraintAttributes { return self(32768) }
- internal static var LeadingMargin: ConstraintAttributes { return self(65536) }
- internal static var TrailingMargin: ConstraintAttributes { return self(131072) }
- internal static var CenterXWithinMargins: ConstraintAttributes { return self(262144) }
- internal static var CenterYWithinMargins: ConstraintAttributes { return self(524288) }
- #endif
-
- // aggregates
-
- internal static var Edges: ConstraintAttributes { return self(15) }
- internal static var Size: ConstraintAttributes { return self(192) }
- internal static var Center: ConstraintAttributes { return self(768) }
-
- #if os(iOS)
- internal static var Margins: ConstraintAttributes { return self(61440) }
- internal static var CenterWithinMargins: ConstraintAttributes { return self(786432) }
- #endif
-
- internal var layoutAttributes:[NSLayoutAttribute] {
- var attrs = [NSLayoutAttribute]()
- if (self & ConstraintAttributes.Left) {
- attrs.append(.Left)
- }
- if (self & ConstraintAttributes.Top) {
- attrs.append(.Top)
- }
- if (self & ConstraintAttributes.Right) {
- attrs.append(.Right)
- }
- if (self & ConstraintAttributes.Bottom) {
- attrs.append(.Bottom)
- }
- if (self & ConstraintAttributes.Leading) {
- attrs.append(.Leading)
- }
- if (self & ConstraintAttributes.Trailing) {
- attrs.append(.Trailing)
- }
- if (self & ConstraintAttributes.Width) {
- attrs.append(.Width)
- }
- if (self & ConstraintAttributes.Height) {
- attrs.append(.Height)
- }
- if (self & ConstraintAttributes.CenterX) {
- attrs.append(.CenterX)
- }
- if (self & ConstraintAttributes.CenterY) {
- attrs.append(.CenterY)
- }
- if (self & ConstraintAttributes.Baseline) {
- attrs.append(.Baseline)
- }
- #if os(iOS)
- if (self & ConstraintAttributes.FirstBaseline) {
- attrs.append(.FirstBaseline)
- }
- if (self & ConstraintAttributes.LeftMargin) {
- attrs.append(.LeftMargin)
- }
- if (self & ConstraintAttributes.RightMargin) {
- attrs.append(.RightMargin)
- }
- if (self & ConstraintAttributes.TopMargin) {
- attrs.append(.TopMargin)
- }
- if (self & ConstraintAttributes.BottomMargin) {
- attrs.append(.BottomMargin)
- }
- if (self & ConstraintAttributes.LeadingMargin) {
- attrs.append(.LeadingMargin)
- }
- if (self & ConstraintAttributes.TrailingMargin) {
- attrs.append(.TrailingMargin)
- }
- if (self & ConstraintAttributes.CenterXWithinMargins) {
- attrs.append(.CenterXWithinMargins)
- }
- if (self & ConstraintAttributes.CenterYWithinMargins) {
- attrs.append(.CenterYWithinMargins)
- }
- #endif
- return attrs
- }
-}
-internal func +=(inout left: ConstraintAttributes, right: ConstraintAttributes) {
- left = (left | right)
-}
-internal func -=(inout left: ConstraintAttributes, right: ConstraintAttributes) {
- left = left & ~right
-}
-internal func ==(left: ConstraintAttributes, right: ConstraintAttributes) -> Bool {
- return left.rawValue == right.rawValue
-}
diff --git a/Source/ConstraintDescription.swift b/Source/ConstraintDescription.swift
deleted file mode 100644
index 0ab8c4b..0000000
--- a/Source/ConstraintDescription.swift
+++ /dev/null
@@ -1,547 +0,0 @@
-//
-// Snap
-//
-// Copyright (c) 2011-2015 Masonry Team - https://github.com/Masonry
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#if os(iOS)
-import UIKit
-#else
-import AppKit
-#endif
-
-/**
- Used to expose the final API of a `ConstraintDescription` which allows getting a constraint from it
- */
-public protocol ConstraintDescriptionFinalizable: class {
-
- var constraint: Constraint { get }
-
-}
-
-/**
- Used to expose priority APIs
- */
-public protocol ConstraintDescriptionPriortizable: ConstraintDescriptionFinalizable {
-
- func priority(priority: Float) -> ConstraintDescriptionFinalizable
- func priority(priority: Double) -> ConstraintDescriptionFinalizable
- func priority(priority: CGFloat) -> ConstraintDescriptionFinalizable
- func priority(priority: UInt) -> ConstraintDescriptionFinalizable
- func priority(priority: Int) -> ConstraintDescriptionFinalizable
- func priorityRequired() -> ConstraintDescriptionFinalizable
- func priorityHigh() -> ConstraintDescriptionFinalizable
- func priorityMedium() -> ConstraintDescriptionFinalizable
- func priorityLow() -> ConstraintDescriptionFinalizable
-}
-
-/**
- Used to expose multiplier APIs
-*/
-public protocol ConstraintDescriptionMultipliable: ConstraintDescriptionPriortizable {
-
- func multipliedBy(amount: Float) -> ConstraintDescriptionPriortizable
- func multipliedBy(amount: Double) -> ConstraintDescriptionPriortizable
- func multipliedBy(amount: CGFloat) -> ConstraintDescriptionPriortizable
- func multipliedBy(amount: Int) -> ConstraintDescriptionPriortizable
- func multipliedBy(amount: UInt) -> ConstraintDescriptionPriortizable
-
- func dividedBy(amount: Float) -> ConstraintDescriptionPriortizable
- func dividedBy(amount: Double) -> ConstraintDescriptionPriortizable
- func dividedBy(amount: CGFloat) -> ConstraintDescriptionPriortizable
- func dividedBy(amount: Int) -> ConstraintDescriptionPriortizable
- func dividedBy(amount: UInt) -> ConstraintDescriptionPriortizable
-}
-
-/**
- Used to expose constant APIs
-*/
-public protocol ConstraintDescriptionOffsetable: ConstraintDescriptionMultipliable {
-
- func offset(amount: Float) -> ConstraintDescriptionMultipliable
- func offset(amount: Double) -> ConstraintDescriptionMultipliable
- func offset(amount: CGFloat) -> ConstraintDescriptionMultipliable
- func offset(amount: Int) -> ConstraintDescriptionMultipliable
- func offset(amount: UInt) -> ConstraintDescriptionMultipliable
- func offset(amount: CGPoint) -> ConstraintDescriptionMultipliable
- func offset(amount: CGSize) -> ConstraintDescriptionMultipliable
- func offset(amount: EdgeInsets) -> ConstraintDescriptionMultipliable
-
- func insets(amount: EdgeInsets) -> ConstraintDescriptionMultipliable
-}
-
-/**
- Used to expose relation APIs
-*/
-public protocol ConstraintDescriptionRelatable: class {
-
- func equalTo(other: ConstraintItem) -> ConstraintDescriptionOffsetable
- func equalTo(other: View) -> ConstraintDescriptionOffsetable
- #if os(iOS)
- func equalTo(other: UILayoutSupport) -> ConstraintDescriptionOffsetable
- #endif
- func equalTo(other: Float) -> ConstraintDescriptionMultipliable
- func equalTo(other: Double) -> ConstraintDescriptionMultipliable
- func equalTo(other: CGFloat) -> ConstraintDescriptionMultipliable
- func equalTo(other: Int) -> ConstraintDescriptionMultipliable
- func equalTo(other: UInt) -> ConstraintDescriptionMultipliable
- func equalTo(other: CGSize) -> ConstraintDescriptionMultipliable
- func equalTo(other: CGPoint) -> ConstraintDescriptionMultipliable
- func equalTo(other: EdgeInsets) -> ConstraintDescriptionMultipliable
-
- func lessThanOrEqualTo(other: ConstraintItem) -> ConstraintDescriptionOffsetable
- func lessThanOrEqualTo(other: View) -> ConstraintDescriptionOffsetable
- #if os(iOS)
- func lessThanOrEqualTo(other: UILayoutSupport) -> ConstraintDescriptionOffsetable
- #endif
- func lessThanOrEqualTo(other: Float) -> ConstraintDescriptionMultipliable
- func lessThanOrEqualTo(other: Double) -> ConstraintDescriptionMultipliable
- func lessThanOrEqualTo(other: CGFloat) -> ConstraintDescriptionMultipliable
- func lessThanOrEqualTo(other: Int) -> ConstraintDescriptionMultipliable
- func lessThanOrEqualTo(other: UInt) -> ConstraintDescriptionMultipliable
- func lessThanOrEqualTo(other: CGSize) -> ConstraintDescriptionMultipliable
- func lessThanOrEqualTo(other: CGPoint) -> ConstraintDescriptionMultipliable
- func lessThanOrEqualTo(other: EdgeInsets) -> ConstraintDescriptionMultipliable
-
- func greaterThanOrEqualTo(other: ConstraintItem) -> ConstraintDescriptionOffsetable
- func greaterThanOrEqualTo(other: View) -> ConstraintDescriptionOffsetable
- #if os(iOS)
- func greaterThanOrEqualTo(other: UILayoutSupport) -> ConstraintDescriptionOffsetable
- #endif
- func greaterThanOrEqualTo(other: Float) -> ConstraintDescriptionMultipliable
- func greaterThanOrEqualTo(other: Double) -> ConstraintDescriptionMultipliable
- func greaterThanOrEqualTo(other: CGFloat) -> ConstraintDescriptionMultipliable
- func greaterThanOrEqualTo(other: Int) -> ConstraintDescriptionMultipliable
- func greaterThanOrEqualTo(other: UInt) -> ConstraintDescriptionMultipliable
- func greaterThanOrEqualTo(other: CGSize) -> ConstraintDescriptionMultipliable
- func greaterThanOrEqualTo(other: CGPoint) -> ConstraintDescriptionMultipliable
- func greaterThanOrEqualTo(other: EdgeInsets) -> ConstraintDescriptionMultipliable
-
-}
-
-/**
- Used to expose chaining APIs
-*/
-public protocol ConstraintDescriptionExtendable: ConstraintDescriptionRelatable {
-
- var left: ConstraintDescriptionExtendable { get }
- var top: ConstraintDescriptionExtendable { get }
- var bottom: ConstraintDescriptionExtendable { get }
- var right: ConstraintDescriptionExtendable { get }
- var leading: ConstraintDescriptionExtendable { get }
- var trailing: ConstraintDescriptionExtendable { get }
- var width: ConstraintDescriptionExtendable { get }
- var height: ConstraintDescriptionExtendable { get }
- var centerX: ConstraintDescriptionExtendable { get }
- var centerY: ConstraintDescriptionExtendable { get }
- var baseline: ConstraintDescriptionExtendable { get }
-
- #if os(iOS)
- var firstBaseline: ConstraintDescriptionExtendable { get }
- var leftMargin: ConstraintDescriptionExtendable { get }
- var rightMargin: ConstraintDescriptionExtendable { get }
- var topMargin: ConstraintDescriptionExtendable { get }
- var bottomMargin: ConstraintDescriptionExtendable { get }
- var leadingMargin: ConstraintDescriptionExtendable { get }
- var trailingMargin: ConstraintDescriptionExtendable { get }
- var centerXWithinMargins: ConstraintDescriptionExtendable { get }
- var centerYWithinMargins: ConstraintDescriptionExtendable { get }
- #endif
-}
-
-/**
- Used to internally manage building constraint
- */
-final internal class ConstraintDescription: ConstraintDescriptionExtendable, ConstraintDescriptionOffsetable, ConstraintDescriptionFinalizable {
-
- internal var left: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Left) }
- internal var top: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Top) }
- internal var right: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Right) }
- internal var bottom: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Bottom) }
- internal var leading: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Leading) }
- internal var trailing: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Trailing) }
- internal var width: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Width) }
- internal var height: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Height) }
- internal var centerX: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.CenterX) }
- internal var centerY: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.CenterY) }
- internal var baseline: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Baseline) }
-
- #if os(iOS)
- internal var firstBaseline: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.FirstBaseline) }
- internal var leftMargin: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.LeftMargin) }
- internal var rightMargin: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.RightMargin) }
- internal var topMargin: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.TopMargin) }
- internal var bottomMargin: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.BottomMargin) }
- internal var leadingMargin: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.LeadingMargin) }
- internal var trailingMargin: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.TrailingMargin) }
- internal var centerXWithinMargins: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.CenterXWithinMargins) }
- internal var centerYWithinMargins: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.CenterYWithinMargins) }
- #endif
-
- // MARK: initializer
-
- init(fromItem: ConstraintItem) {
- self.fromItem = fromItem
- self.toItem = ConstraintItem(object: nil, attributes: ConstraintAttributes.None)
- }
-
- // MARK: equalTo
-
- internal func equalTo(other: ConstraintItem) -> ConstraintDescriptionOffsetable {
- return self.constrainTo(other, relation: .Equal)
- }
- internal func equalTo(other: View) -> ConstraintDescriptionOffsetable {
- return self.constrainTo(other, relation: .Equal)
- }
-
- #if os(iOS)
- internal func equalTo(other: UILayoutSupport) -> ConstraintDescriptionOffsetable {
- return self.constrainTo(other, relation: .Equal)
- }
- #endif
- internal func equalTo(other: Float) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(other, relation: .Equal)
- }
- internal func equalTo(other: Double) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(Float(other), relation: .Equal)
- }
- internal func equalTo(other: CGFloat) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(Float(other), relation: .Equal)
- }
- internal func equalTo(other: Int) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(Float(other), relation: .Equal)
- }
- internal func equalTo(other: UInt) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(Float(other), relation: .Equal)
- }
- internal func equalTo(other: CGSize) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(other, relation: .Equal)
- }
- internal func equalTo(other: CGPoint) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(other, relation: .Equal)
- }
- internal func equalTo(other: EdgeInsets) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(other, relation: .Equal)
- }
-
- // MARK: lessThanOrEqualTo
-
- internal func lessThanOrEqualTo(other: ConstraintItem) -> ConstraintDescriptionOffsetable {
- return self.constrainTo(other, relation: .LessThanOrEqualTo)
- }
- internal func lessThanOrEqualTo(other: View) -> ConstraintDescriptionOffsetable {
- return self.constrainTo(other, relation: .LessThanOrEqualTo)
- }
- #if os(iOS)
- internal func lessThanOrEqualTo(other: UILayoutSupport) -> ConstraintDescriptionOffsetable {
- return self.constrainTo(other, relation: .LessThanOrEqualTo)
- }
- #endif
- internal func lessThanOrEqualTo(other: Float) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(other, relation: .LessThanOrEqualTo)
- }
- internal func lessThanOrEqualTo(other: Double) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(Float(other), relation: .LessThanOrEqualTo)
- }
- internal func lessThanOrEqualTo(other: CGFloat) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(Float(other), relation: .LessThanOrEqualTo)
- }
- internal func lessThanOrEqualTo(other: Int) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(Float(other), relation: .LessThanOrEqualTo)
- }
- internal func lessThanOrEqualTo(other: UInt) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(Float(other), relation: .LessThanOrEqualTo)
- }
- internal func lessThanOrEqualTo(other: CGSize) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(other, relation: .LessThanOrEqualTo)
- }
- internal func lessThanOrEqualTo(other: CGPoint) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(other, relation: .LessThanOrEqualTo)
- }
- internal func lessThanOrEqualTo(other: EdgeInsets) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(other, relation: .LessThanOrEqualTo)
- }
-
- // MARK: greaterThanOrEqualTo
-
- internal func greaterThanOrEqualTo(other: ConstraintItem) -> ConstraintDescriptionOffsetable {
- return self.constrainTo(other, relation: .GreaterThanOrEqualTo)
- }
- internal func greaterThanOrEqualTo(other: View) -> ConstraintDescriptionOffsetable {
- return self.constrainTo(other, relation: .GreaterThanOrEqualTo)
- }
- #if os(iOS)
- internal func greaterThanOrEqualTo(other: UILayoutSupport) -> ConstraintDescriptionOffsetable {
- return self.constrainTo(other, relation: .GreaterThanOrEqualTo)
- }
- #endif
- internal func greaterThanOrEqualTo(other: Float) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(other, relation: .GreaterThanOrEqualTo)
- }
- internal func greaterThanOrEqualTo(other: Double) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(Float(other), relation: .GreaterThanOrEqualTo)
- }
- internal func greaterThanOrEqualTo(other: CGFloat) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(Float(other), relation: .GreaterThanOrEqualTo)
- }
- internal func greaterThanOrEqualTo(other: Int) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(Float(other), relation: .GreaterThanOrEqualTo)
- }
- internal func greaterThanOrEqualTo(other: UInt) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(Float(other), relation: .GreaterThanOrEqualTo)
- }
- internal func greaterThanOrEqualTo(other: CGSize) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(other, relation: .GreaterThanOrEqualTo)
- }
- internal func greaterThanOrEqualTo(other: CGPoint) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(other, relation: .GreaterThanOrEqualTo)
- }
- internal func greaterThanOrEqualTo(other: EdgeInsets) -> ConstraintDescriptionMultipliable {
- return self.constrainTo(other, relation: .GreaterThanOrEqualTo)
- }
-
- // MARK: multiplier
-
- internal func multipliedBy(amount: Float) -> ConstraintDescriptionPriortizable {
- self.multiplier = amount
- return self
- }
- internal func multipliedBy(amount: Double) -> ConstraintDescriptionPriortizable {
- return self.multipliedBy(Float(amount))
- }
- internal func multipliedBy(amount: CGFloat) -> ConstraintDescriptionPriortizable {
- return self.multipliedBy(Float(amount))
- }
- internal func multipliedBy(amount: Int) -> ConstraintDescriptionPriortizable {
- return self.multipliedBy(Float(amount))
- }
- internal func multipliedBy(amount: UInt) -> ConstraintDescriptionPriortizable {
- return self.multipliedBy(Float(amount))
- }
-
- internal func dividedBy(amount: Float) -> ConstraintDescriptionPriortizable {
- self.multiplier = 1.0 / amount;
- return self
- }
- internal func dividedBy(amount: Double) -> ConstraintDescriptionPriortizable {
- return self.dividedBy(Float(amount))
- }
- internal func dividedBy(amount: CGFloat) -> ConstraintDescriptionPriortizable {
- return self.dividedBy(Float(amount))
- }
- internal func dividedBy(amount: Int) -> ConstraintDescriptionPriortizable {
- return self.dividedBy(Float(amount))
- }
- internal func dividedBy(amount: UInt) -> ConstraintDescriptionPriortizable {
- return self.dividedBy(Float(amount))
- }
-
- // MARK: priority
-
- internal func priority(priority: Float) -> ConstraintDescriptionFinalizable {
- self.priority = priority
- return self
- }
- internal func priority(priority: Double) -> ConstraintDescriptionFinalizable {
- return self.priority(Float(priority))
- }
- internal func priority(priority: CGFloat) -> ConstraintDescriptionFinalizable {
- return self.priority(Float(priority))
- }
- func priority(priority: UInt) -> ConstraintDescriptionFinalizable {
- return self.priority(Float(priority))
- }
- internal func priority(priority: Int) -> ConstraintDescriptionFinalizable {
- return self.priority(Float(priority))
- }
- internal func priorityRequired() -> ConstraintDescriptionFinalizable {
- return self.priority(1000.0)
- }
- internal func priorityHigh() -> ConstraintDescriptionFinalizable {
- return self.priority(750.0)
- }
- internal func priorityMedium() -> ConstraintDescriptionFinalizable {
- #if os(iOS)
- return self.priority(500.0)
- #else
- return self.priority(501.0)
- #endif
- }
- internal func priorityLow() -> ConstraintDescriptionFinalizable {
- return self.priority(250.0)
- }
-
- // MARK: offset
-
- internal func offset(amount: Float) -> ConstraintDescriptionMultipliable {
- self.constant = amount
- return self
- }
- internal func offset(amount: Double) -> ConstraintDescriptionMultipliable {
- return self.offset(Float(amount))
- }
- internal func offset(amount: CGFloat) -> ConstraintDescriptionMultipliable {
- return self.offset(Float(amount))
- }
- internal func offset(amount: Int) -> ConstraintDescriptionMultipliable {
- return self.offset(Float(amount))
- }
- internal func offset(amount: UInt) -> ConstraintDescriptionMultipliable {
- return self.offset(Float(amount))
- }
- internal func offset(amount: CGPoint) -> ConstraintDescriptionMultipliable {
- self.constant = amount
- return self
- }
- internal func offset(amount: CGSize) -> ConstraintDescriptionMultipliable {
- self.constant = amount
- return self
- }
- internal func offset(amount: EdgeInsets) -> ConstraintDescriptionMultipliable {
- self.constant = amount
- return self
- }
-
- // MARK: insets
-
- internal func insets(amount: EdgeInsets) -> ConstraintDescriptionMultipliable {
- self.constant = EdgeInsets(top: amount.top, left: amount.left, bottom: -amount.bottom, right: -amount.right)
- return self
- }
-
- // MARK: Constraint
-
- internal var constraint: Constraint {
- if self.concreteConstraint == nil {
- if self.relation == nil {
- fatalError("Attempting to create a constraint from a ConstraintDescription before it has been fully chained.")
- }
- self.concreteConstraint = ConcreteConstraint(
- fromItem: self.fromItem,
- toItem: self.toItem,
- relation: self.relation!,
- constant: self.constant,
- multiplier: self.multiplier,
- priority: self.priority)
- }
- return self.concreteConstraint!
- }
-
- // MARK: Private
-
- private let fromItem: ConstraintItem
- private var toItem: ConstraintItem {
- willSet {
- if self.concreteConstraint != nil {
- fatalError("Attempting to modify a ConstraintDescription after its constraint has been created.")
- }
- }
- }
- private var relation: ConstraintRelation? {
- willSet {
- if self.concreteConstraint != nil {
- fatalError("Attempting to modify a ConstraintDescription after its constraint has been created.")
- }
- }
- }
- private var constant: Any = Float(0.0) {
- willSet {
- if self.concreteConstraint != nil {
- fatalError("Attempting to modify a ConstraintDescription after its constraint has been created.")
- }
- }
- }
- private var multiplier: Float = 1.0 {
- willSet {
- if self.concreteConstraint != nil {
- fatalError("Attempting to modify a ConstraintDescription after its constraint has been created.")
- }
- }
- }
- private var priority: Float = 1000.0 {
- willSet {
- if self.concreteConstraint != nil {
- fatalError("Attempting to modify a ConstraintDescription after its constraint has been created.")
- }
- }
- }
- private var concreteConstraint: ConcreteConstraint? = nil
-
- private func addConstraint(attributes: ConstraintAttributes) -> ConstraintDescription {
- if self.relation == nil {
- self.fromItem.attributes += attributes
- }
- return self
- }
-
- private func constrainTo(other: ConstraintItem, relation: ConstraintRelation) -> ConstraintDescription {
- if other.attributes != ConstraintAttributes.None {
- let toLayoutAttributes = other.attributes.layoutAttributes
- if toLayoutAttributes.count > 1 {
- let fromLayoutAttributes = self.fromItem.attributes.layoutAttributes
- if toLayoutAttributes != fromLayoutAttributes {
- NSException(name: "Invalid Constraint", reason: "Cannot constrain to multiple non identical attributes", userInfo: nil).raise()
- return self
- }
- other.attributes = ConstraintAttributes.None
- }
- }
- self.toItem = other
- self.relation = relation
- return self
- }
-
- private func constrainTo(other: View, relation: ConstraintRelation) -> ConstraintDescription {
- return constrainTo(ConstraintItem(object: other, attributes: ConstraintAttributes.None), relation: relation)
- }
-
- #if os(iOS)
-
- private func constrainTo(other: UILayoutSupport, relation: ConstraintRelation) -> ConstraintDescription {
- return constrainTo(ConstraintItem(object: other, attributes: ConstraintAttributes.None), relation: relation)
- }
-
- #endif
-
- private func constrainTo(other: Float, relation: ConstraintRelation) -> ConstraintDescription {
- self.constant = other
- return constrainTo(ConstraintItem(object: nil, attributes: ConstraintAttributes.None), relation: relation)
- }
-
- private func constrainTo(other: Double, relation: ConstraintRelation) -> ConstraintDescription {
- self.constant = other
- return constrainTo(ConstraintItem(object: nil, attributes: ConstraintAttributes.None), relation: relation)
- }
-
- private func constrainTo(other: CGSize, relation: ConstraintRelation) -> ConstraintDescription {
- self.constant = other
- return constrainTo(ConstraintItem(object: nil, attributes: ConstraintAttributes.None), relation: relation)
- }
-
- private func constrainTo(other: CGPoint, relation: ConstraintRelation) -> ConstraintDescription {
- self.constant = other
- return constrainTo(ConstraintItem(object: nil, attributes: ConstraintAttributes.None), relation: relation)
- }
-
- private func constrainTo(other: EdgeInsets, relation: ConstraintRelation) -> ConstraintDescription {
- self.constant = other
- return constrainTo(ConstraintItem(object: nil, attributes: ConstraintAttributes.None), relation: relation)
- }
-}
\ No newline at end of file
diff --git a/Source/ConstraintItem.swift b/Source/ConstraintItem.swift
deleted file mode 100644
index 3b99b55..0000000
--- a/Source/ConstraintItem.swift
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-// Snap
-//
-// Copyright (c) 2011-2015 Masonry Team - https://github.com/Masonry
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#if os(iOS)
-import UIKit
-#else
-import AppKit
-#endif
-
-/**
- Used to assist in building a constraint
-*/
-final public class ConstraintItem {
-
- internal init(object: AnyObject?, attributes: ConstraintAttributes) {
- self.object = object
- self.attributes = attributes
- }
-
- internal weak var object: AnyObject?
- internal var attributes: ConstraintAttributes
-
- internal var view: View? {
- return self.object as? View
- }
-
- #if os(iOS)
-
- internal var layoutSupport: UILayoutSupport? {
- return self.object as? UILayoutSupport
- }
-
- #endif
-}
-
-
-internal func ==(left: ConstraintItem, right: ConstraintItem) -> Bool {
- if left.object == nil {
- return false
- }
- if right.object == nil {
- return false
- }
- if left.object !== right.object {
- return false
- }
- if left.attributes != right.attributes {
- return false
- }
- return true
-}
\ No newline at end of file
diff --git a/Source/ConstraintMaker.swift b/Source/ConstraintMaker.swift
deleted file mode 100644
index bc19cd1..0000000
--- a/Source/ConstraintMaker.swift
+++ /dev/null
@@ -1,189 +0,0 @@
-//
-// Snap
-//
-// Copyright (c) 2011-2015 Masonry Team - https://github.com/Masonry
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#if os(iOS)
-import UIKit
-#else
-import AppKit
-#endif
-
-/**
- Used to make constraints
-*/
-final public class ConstraintMaker {
-
- /// left edge
- public var left: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Left) }
-
- /// top edge
- public var top: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Top) }
-
- /// right edge
- public var right: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Right) }
-
- /// bottom edge
- public var bottom: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Bottom) }
-
- /// leading edge
- public var leading: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Leading) }
-
- /// trailing edge
- public var trailing: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Trailing) }
-
- /// width dimension
- public var width: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Width) }
-
- /// height dimension
- public var height: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Height) }
-
- /// centerX dimension
- public var centerX: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterX) }
-
- /// centerY dimension
- public var centerY: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterY) }
-
- /// baseline position
- public var baseline: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Baseline) }
-
- #if os(iOS)
-
- /// firse baseline position
- public var firstBaseline: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.FirstBaseline) }
-
- /// left margin
- public var leftMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.LeftMargin) }
-
- /// right margin
- public var rightMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.RightMargin) }
-
- /// top margin
- public var topMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.TopMargin) }
-
- /// bottom margin
- public var bottomMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.BottomMargin) }
-
- /// leading margin
- public var leadingMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.LeadingMargin) }
-
- /// trailing margin
- public var trailingMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.TrailingMargin) }
-
- /// centerX within margins
- public var centerXWithinMargins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterXWithinMargins) }
-
- /// centerY within margins
- public var centerYWithinMargins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterYWithinMargins) }
- #endif
-
- /// top + left + bottom + right edges
- public var edges: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Edges) }
-
- /// width + height dimensions
- public var size: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Size) }
-
- // centerX + centerY positions
- public var center: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Center) }
-
- #if os(iOS)
-
- // top + left + bottom + right margins
- public var snp_margins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Margins) }
-
- // centerX + centerY within margins
- public var snp_centerWithinMargins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterWithinMargins) }
-
- #endif
-
- internal init(view: View) {
- self.view = view
- }
-
- internal let view: View
- internal var constraintDescriptions = [ConstraintDescription]()
-
- internal func makeConstraintDescription(attributes: ConstraintAttributes) -> ConstraintDescription {
- let item = ConstraintItem(object: self.view, attributes: attributes)
- let constraintDescription = ConstraintDescription(fromItem: item)
- self.constraintDescriptions.append(constraintDescription)
- return constraintDescription
- }
-
- internal class func prepareConstraints(view: View, @noescape closure: (make: ConstraintMaker) -> Void) -> [Constraint] {
- let maker = ConstraintMaker(view: view)
- closure(make: maker)
-
- return maker.constraintDescriptions.map { $0.constraint }
- }
-
- internal class func makeConstraints(view: View, @noescape closure: (make: ConstraintMaker) -> Void) {
- #if os(iOS)
- view.setTranslatesAutoresizingMaskIntoConstraints(false)
- #else
- view.translatesAutoresizingMaskIntoConstraints = false
- #endif
- let maker = ConstraintMaker(view: view)
- closure(make: maker)
-
- let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint }
- for constraint in constraints {
- constraint.installOnView(updateExisting: false)
- }
- }
-
- internal class func remakeConstraints(view: View, @noescape closure: (make: ConstraintMaker) -> Void) {
- #if os(iOS)
- view.setTranslatesAutoresizingMaskIntoConstraints(false)
- #else
- view.translatesAutoresizingMaskIntoConstraints = false
- #endif
- let maker = ConstraintMaker(view: view)
- closure(make: maker)
-
- self.removeConstraints(view)
- let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint }
- for constraint in constraints {
- constraint.installOnView(updateExisting: false)
- }
- }
-
- internal class func updateConstraints(view: View, @noescape closure: (make: ConstraintMaker) -> Void) {
- #if os(iOS)
- view.setTranslatesAutoresizingMaskIntoConstraints(false)
- #else
- view.translatesAutoresizingMaskIntoConstraints = false
- #endif
- let maker = ConstraintMaker(view: view)
- closure(make: maker)
-
- let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint}
- for constraint in constraints {
- constraint.installOnView(updateExisting: true)
- }
- }
-
- internal class func removeConstraints(view: View) {
- for existingLayoutConstraint in view.snp_installedLayoutConstraints {
- existingLayoutConstraint.snp_constraint?.uninstall()
- }
- }
-}
\ No newline at end of file
diff --git a/Source/ConstraintRelation.swift b/Source/ConstraintRelation.swift
deleted file mode 100644
index 57cb3f9..0000000
--- a/Source/ConstraintRelation.swift
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// Snap
-//
-// Copyright (c) 2011-2015 Masonry Team - https://github.com/Masonry
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#if os(iOS)
-import UIKit
-#else
-import AppKit
-#endif
-
-/**
- Used to define `NSLayoutRelation`
-*/
-internal enum ConstraintRelation: Int {
- case Equal = 1, LessThanOrEqualTo, GreaterThanOrEqualTo
-
- internal var layoutRelation: NSLayoutRelation {
- get {
- switch(self) {
- case .LessThanOrEqualTo:
- return .LessThanOrEqual
- case .GreaterThanOrEqualTo:
- return .GreaterThanOrEqual
- default:
- return .Equal
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Source/Debugging.swift b/Source/Debugging.swift
deleted file mode 100644
index 9449afb..0000000
--- a/Source/Debugging.swift
+++ /dev/null
@@ -1,175 +0,0 @@
-//
-// Snap
-//
-// Copyright (c) 2011-2015 Masonry Team - https://github.com/Masonry
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#if os(iOS)
-import UIKit
-#else
-import AppKit
-#endif
-
-/**
- Used to allow adding a snp_label to a View for debugging purposes
-*/
-public extension View {
-
- public var snp_label: String? {
- get {
- return objc_getAssociatedObject(self, &labelKey) as? String
- }
- set {
- objc_setAssociatedObject(self, &labelKey, newValue, objc_AssociationPolicy(OBJC_ASSOCIATION_COPY_NONATOMIC))
- }
- }
-
-}
-
-/**
- Used to allow adding a snp_label to a LayoutConstraint for debugging purposes
-*/
-public extension LayoutConstraint {
-
- public var snp_label: String? {
- get {
- return objc_getAssociatedObject(self, &labelKey) as? String
- }
- set {
- objc_setAssociatedObject(self, &labelKey, newValue, objc_AssociationPolicy(OBJC_ASSOCIATION_COPY_NONATOMIC))
- }
- }
-
- override public var description: String {
- var description = "<"
-
- description += descriptionForObject(self)
-
- description += " \(descriptionForObject(self.firstItem))"
- if self.firstAttribute != .NotAnAttribute {
- description += ".\(self.firstAttribute.snp_description)"
- }
-
- description += " \(self.relation.snp_description)"
-
- if let secondItem: AnyObject = self.secondItem {
- description += " \(descriptionForObject(secondItem))"
- }
-
- if self.secondAttribute != .NotAnAttribute {
- description += ".\(self.secondAttribute.snp_description)"
- }
-
- if self.multiplier != 1.0 {
- description += " * \(self.multiplier)"
- }
-
- if self.secondAttribute == .NotAnAttribute {
- description += " \(self.constant)"
- } else {
- if self.constant > 0.0 {
- description += " + \(self.constant)"
- } else if self.constant < 0.0 {
- description += " - \(CGFloat.abs(self.constant))"
- }
- }
-
- if self.priority != 1000.0 {
- description += " ^\(self.priority)"
- }
-
- description += ">"
-
- return description
- }
-
-}
-
-private var labelKey = ""
-
-private func descriptionForObject(object: AnyObject) -> String {
- let pointerDescription = NSString(format: "%p", [object])
- if let object = object as? View {
- return "<\(object.dynamicType):\(object.snp_label ?? pointerDescription)>"
- } else if let object = object as? LayoutConstraint {
- return "<\(object.dynamicType):\(object.snp_label ?? pointerDescription)>"
- }
- return "<\(object.dynamicType):\(pointerDescription)>"
-}
-
-private extension NSLayoutRelation {
-
- private var snp_description: String {
- switch self {
- case .Equal: return "=="
- case .GreaterThanOrEqual: return ">="
- case .LessThanOrEqual: return "<="
- }
- }
-
-}
-
-private extension NSLayoutAttribute {
-
- private var snp_description: String {
- #if os(iOS)
- switch self {
- case .NotAnAttribute: return "notAnAttribute"
- case .Top: return "top"
- case .Left: return "left"
- case .Bottom: return "bottom"
- case .Right: return "right"
- case .Leading: return "leading"
- case .Trailing: return "trailing"
- case .Width: return "width"
- case .Height: return "height"
- case .CenterX: return "centerX"
- case .CenterY: return "centerY"
- case .Baseline: return "baseline"
- case .FirstBaseline: return "firstBaseline"
- case .TopMargin: return "topMargin"
- case .LeftMargin: return "leftMargin"
- case .BottomMargin: return "bottomMargin"
- case .RightMargin: return "rightMargin"
- case .LeadingMargin: return "leadingMargin"
- case .TrailingMargin: return "trailingMargin"
- case .CenterXWithinMargins: return "centerXWithinMargins"
- case .CenterYWithinMargins: return "centerYWithinMargins"
- }
- #else
- switch self {
- case .NotAnAttribute: return "notAnAttribute"
- case .Top: return "top"
- case .Left: return "left"
- case .Bottom: return "bottom"
- case .Right: return "right"
- case .Leading: return "leading"
- case .Trailing: return "trailing"
- case .Width: return "width"
- case .Height: return "height"
- case .CenterX: return "centerX"
- case .CenterY: return "centerY"
- case .Baseline: return "baseline"
- }
- #endif
-
- }
-
-}
diff --git a/Source/EdgeInsets.swift b/Source/EdgeInsets.swift
deleted file mode 100644
index 301838a..0000000
--- a/Source/EdgeInsets.swift
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// Snap
-//
-// Copyright (c) 2011-2015 Masonry Team - https://github.com/Masonry
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#if os(iOS)
-import UIKit
-public typealias EdgeInsets = UIEdgeInsets
-public func EdgeInsetsMake(top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat) -> EdgeInsets {
- return EdgeInsets(top: top, left: left, bottom: bottom, right: right)
-}
-public let EdgeInsetsZero = EdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
-#else
-import AppKit
-public struct EdgeInsets {
- public var top: CGFloat
- public var left: CGFloat
- public var bottom: CGFloat
- public var right: CGFloat
-}
-public func EdgeInsetsMake(top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat) -> EdgeInsets {
- return EdgeInsets(top: top, left: left, bottom: bottom, right: right)
-}
-public let EdgeInsetsZero = EdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
-#endif
diff --git a/Source/Info.plist b/Source/Info.plist
deleted file mode 100644
index 7613312..0000000
--- a/Source/Info.plist
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- com.masonry.$(PRODUCT_NAME:rfc1034identifier)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- $(CURRENT_PROJECT_VERSION)
- NSPrincipalClass
-
-
-
diff --git a/Source/LayoutConstraint.swift b/Source/LayoutConstraint.swift
deleted file mode 100644
index dad99ff..0000000
--- a/Source/LayoutConstraint.swift
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// Snap
-//
-// Copyright (c) 2011-2015 Masonry Team - https://github.com/Masonry
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#if os(iOS)
-import UIKit
-#else
-import AppKit
-#endif
-
-/**
- Used to add extra information to the actual `NSLayoutConstraint`'s that will UIKit/AppKit will utilize
-*/
-final public class LayoutConstraint: NSLayoutConstraint {
-
- internal var snp_constraint: Constraint? = nil
-
-}
-
-internal func ==(left: LayoutConstraint, right: LayoutConstraint) -> Bool {
- if left.firstItem !== right.firstItem {
- return false
- }
- if left.secondItem !== right.secondItem {
- return false
- }
- if left.firstAttribute != right.firstAttribute {
- return false
- }
- if left.secondAttribute != right.secondAttribute {
- return false
- }
- if left.relation != right.relation {
- return false
- }
- if left.priority != right.priority {
- return false
- }
- if left.multiplier != right.multiplier {
- return false
- }
- return true
-}
-
diff --git a/Source/Snap.h b/Source/Snap.h
deleted file mode 100644
index 0b37559..0000000
--- a/Source/Snap.h
+++ /dev/null
@@ -1,27 +0,0 @@
-//
-// Snap
-//
-// Copyright (c) 2011-2014 Masonry Team - https://github.com/Masonry
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#import
-
-FOUNDATION_EXPORT double SnapVersionNumber;
-FOUNDATION_EXPORT const unsigned char SnapVersionString[];
\ No newline at end of file
diff --git a/Source/Snap.swift b/Source/Snap.swift
deleted file mode 100644
index ad9d1e7..0000000
--- a/Source/Snap.swift
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// Snap
-//
-// Copyright (c) 2011-2015 Masonry Team - https://github.com/Masonry
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#if os(iOS)
-import UIKit
-public typealias InterfaceLayoutDirection = UIUserInterfaceLayoutDirection
-#else
-import AppKit
-public typealias InterfaceLayoutDirection = NSUserInterfaceLayoutDirection
-#endif
-
-/**
- Used to configure different parts of Snap
-*/
-public struct Config {
-
- /// The interface layout direction
- public static var interfaceLayoutDirection = InterfaceLayoutDirection.LeftToRight
-
-}
\ No newline at end of file
diff --git a/Source/View+Snap.swift b/Source/View+Snap.swift
deleted file mode 100644
index 44f452d..0000000
--- a/Source/View+Snap.swift
+++ /dev/null
@@ -1,180 +0,0 @@
-//
-// Snap
-//
-// Copyright (c) 2011-2015 Masonry Team - https://github.com/Masonry
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-#if os(iOS)
-import UIKit
-public typealias View = UIView
-#else
-import AppKit
-public typealias View = NSView
-#endif
-
-/**
- Used to expose public API on views
-*/
-public extension View {
-
- /// left edge
- final public var snp_left: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Left) }
-
- /// top edge
- final public var snp_top: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Top) }
-
- /// right edge
- final public var snp_right: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Right) }
-
- /// bottom edge
- final public var snp_bottom: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Bottom) }
-
- /// leading edge
- final public var snp_leading: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Leading) }
-
- /// trailing edge
- final public var snp_trailing: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Trailing) }
-
- /// width dimension
- final public var snp_width: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Width) }
-
- /// height dimension
- final public var snp_height: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Height) }
-
- /// centerX position
- final public var snp_centerX: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.CenterX) }
-
- /// centerY position
- final public var snp_centerY: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.CenterY) }
-
- /// baseline position
- final public var snp_baseline: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Baseline) }
-
- #if os(iOS)
-
- /// first baseline position
- final public var snp_firstBaseline: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.FirstBaseline) }
-
- /// left margin
- final public var snp_leftMargin: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.LeftMargin) }
-
- /// right margin
- final public var snp_rightMargin: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.RightMargin) }
-
- /// top margin
- final public var snp_topMargin: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.TopMargin) }
-
- /// bottom margin
- final public var snp_bottomMargin: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.BottomMargin) }
-
- /// leading margin
- final public var snp_leadingMargin: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.LeadingMargin) }
-
- /// trailing margin
- final public var snp_trailingMargin: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.TrailingMargin) }
-
- /// centerX within margins
- final public var snp_centerXWithinMargins: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.CenterXWithinMargins) }
-
- /// centerY within margins
- final public var snp_centerYWithinMargins: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.CenterYWithinMargins) }
-
- #endif
-
- // top + left + bottom + right edges
- final public var snp_edges: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Edges) }
-
- // width + height dimensions
- final public var snp_size: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Size) }
-
- // centerX + centerY positions
- final public var snp_center: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Center) }
-
- #if os(iOS)
-
- // top + left + bottom + right margins
- final public var snp_margins: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Margins) }
-
- // centerX + centerY within margins
- final public var snp_centerWithinMargins: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.CenterWithinMargins) }
-
- #endif
-
- /**
- Prepares constraints with a `ConstraintMaker` and returns the made constraints but does not install them.
-
- :param: closure that will be passed the `ConstraintMaker` to make the constraints with
-
- :returns: the constraints made
- */
- final public func snp_prepareConstraints(@noescape closure: (make: ConstraintMaker) -> Void) -> [Constraint] {
- return ConstraintMaker.prepareConstraints(self, closure: closure)
- }
-
- /**
- Makes constraints with a `ConstraintMaker` and installs them along side any previous made constraints.
-
- :param: closure that will be passed the `ConstraintMaker` to make the constraints with
- */
- final public func snp_makeConstraints(@noescape closure: (make: ConstraintMaker) -> Void) -> Void {
- ConstraintMaker.makeConstraints(self, closure: closure)
- }
-
- /**
- Updates constraints with a `ConstraintMaker` that will replace existing constraints that match and install new ones.
-
- For constraints to match only the constant can be updated.
-
- :param: closure that will be passed the `ConstraintMaker` to update the constraints with
- */
- final public func snp_updateConstraints(@noescape closure: (make: ConstraintMaker) -> Void) -> Void {
- ConstraintMaker.updateConstraints(self, closure: closure)
- }
-
- /**
- Remakes constraints with a `ConstraintMaker` that will first remove all previously made constraints and make and install new ones.
-
- :param: closure that will be passed the `ConstraintMaker` to remake the constraints with
- */
- final public func snp_remakeConstraints(@noescape closure: (make: ConstraintMaker) -> Void) -> Void {
- ConstraintMaker.remakeConstraints(self, closure: closure)
- }
-
- /**
- Removes all previously made constraints.
- */
- final public func snp_removeConstraints() {
- ConstraintMaker.removeConstraints(self)
- }
-
- final internal var snp_installedLayoutConstraints: [LayoutConstraint] {
- get {
- if let constraints = objc_getAssociatedObject(self, &installedLayoutConstraintsKey) as? [LayoutConstraint] {
- return constraints
- }
- return []
- }
- set {
- objc_setAssociatedObject(self, &installedLayoutConstraintsKey, newValue, UInt(OBJC_ASSOCIATION_RETAIN_NONATOMIC))
- }
- }
-}
-
-private var installedLayoutConstraintsKey = ""
diff --git a/Tests/Info.plist b/Tests/Info.plist
deleted file mode 100644
index 1235593..0000000
--- a/Tests/Info.plist
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- com.masonry.$(PRODUCT_NAME:rfc1034identifier)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- BNDL
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1
-
-
diff --git a/Tests/Tests.swift b/Tests/Tests.swift
deleted file mode 100644
index cb2315e..0000000
--- a/Tests/Tests.swift
+++ /dev/null
@@ -1,214 +0,0 @@
-#if os(iOS)
-import UIKit
-typealias View = UIView
-extension View {
- var snp_constraints: [AnyObject] { return self.constraints() }
-}
-#else
-import AppKit
-typealias View = NSView
-extension View {
- var snp_constraints: [AnyObject] { return self.constraints }
-}
-#endif
-
-import XCTest
-import Snap
-
-class SnapTests: XCTestCase {
-
- let container = View()
-
- override func setUp() {
- super.setUp()
- // Put setup code here. This method is called before the invocation of each test method in the class.
- }
-
- override func tearDown() {
- // Put teardown code here. This method is called after the invocation of each test method in the class.
- super.tearDown()
- }
-
- func testMakeConstraints() {
- let v1 = View()
- let v2 = View()
- self.container.addSubview(v1)
- self.container.addSubview(v2)
-
- v1.snp_makeConstraints { (make) -> Void in
- make.top.equalTo(v2.snp_top).offset(50)
- make.left.equalTo(v2.snp_top).offset(50)
- return
- }
-
- XCTAssertEqual(self.container.snp_constraints.count, 2, "Should have 2 constraints installed")
-
- v2.snp_makeConstraints { (make) -> Void in
- make.edges.equalTo(v1)
- return
- }
-
- XCTAssertEqual(self.container.snp_constraints.count, 6, "Should have 6 constraints installed")
-
- }
-
- func testUpdateConstraints() {
- let v1 = View()
- let v2 = View()
- self.container.addSubview(v1)
- self.container.addSubview(v2)
-
- v1.snp_makeConstraints { (make) -> Void in
- make.top.equalTo(v2.snp_top).offset(50)
- make.left.equalTo(v2.snp_top).offset(50)
- return
- }
-
- XCTAssertEqual(self.container.snp_constraints.count, 2, "Should have 2 constraints installed")
-
- v1.snp_updateConstraints { (make) -> Void in
- make.top.equalTo(v2.snp_top).offset(15)
- return
- }
-
- XCTAssertEqual(self.container.snp_constraints.count, 2, "Should still have 2 constraints installed")
-
- }
-
- func testRemakeConstraints() {
- let v1 = View()
- let v2 = View()
- self.container.addSubview(v1)
- self.container.addSubview(v2)
-
- v1.snp_makeConstraints { (make) -> Void in
- make.top.equalTo(v2.snp_top).offset(50)
- make.left.equalTo(v2.snp_top).offset(50)
- return
- }
-
- XCTAssertEqual(self.container.snp_constraints.count, 2, "Should have 2 constraints installed")
-
- v1.snp_remakeConstraints { (make) -> Void in
- make.edges.equalTo(v2)
- return
- }
-
- XCTAssertEqual(self.container.snp_constraints.count, 4, "Should have 4 constraints installed")
-
- }
-
- func testRemoveConstraints() {
- let v1 = View()
- let v2 = View()
- self.container.addSubview(v1)
- self.container.addSubview(v2)
-
- v1.snp_makeConstraints { (make) -> Void in
- make.top.equalTo(v2.snp_top).offset(50)
- make.left.equalTo(v2.snp_top).offset(50)
- return
- }
-
- XCTAssertEqual(self.container.snp_constraints.count, 2, "Should have 2 constraints installed")
-
- v1.snp_removeConstraints()
-
- XCTAssertEqual(self.container.snp_constraints.count, 0, "Should have 0 constraints installed")
-
- }
-
- func testPrepareConstraints() {
- let v1 = View()
- let v2 = View()
- self.container.addSubview(v1)
- self.container.addSubview(v2)
-
- let constraints = v1.snp_prepareConstraints { (make) -> Void in
- make.edges.equalTo(v2)
- return
- }
-
- XCTAssertEqual(self.container.snp_constraints.count, 0, "Should have 0 constraints installed")
-
- for constraint in constraints {
- constraint.install()
- }
-
- XCTAssertEqual(self.container.snp_constraints.count, 4, "Should have 4 constraints installed")
-
- for constraint in constraints {
- constraint.uninstall()
- }
-
- XCTAssertEqual(self.container.snp_constraints.count, 0, "Should have 0 constraints installed")
-
- }
-
- func testReinstallConstraints() {
- let v1 = View()
- let v2 = View()
- self.container.addSubview(v1)
- self.container.addSubview(v2)
-
- let constraints = v1.snp_prepareConstraints { (make) -> Void in
- make.edges.equalTo(v2)
- return
- }
-
-
- XCTAssertEqual(self.container.snp_constraints.count, 0, "Should have 0 constraints installed")
-
- for constraint in constraints {
- constraint.install()
- }
-
- XCTAssertEqual(self.container.snp_constraints.count, 4, "Should have 4 constraints installed")
-
- for constraint in constraints {
- constraint.install()
- }
-
- XCTAssertEqual(self.container.snp_constraints.count, 4, "Should have 0 constraints installed")
- }
-
- func testActivateDeactivateConstraints() {
- let v1 = View()
- let v2 = View()
- self.container.addSubview(v1)
- self.container.addSubview(v2)
-
- var c1: Constraint? = nil
- var c2: Constraint? = nil
-
- v1.snp_prepareConstraints { (make) -> Void in
- c1 = make.top.equalTo(v2.snp_top).offset(50).constraint
- c2 = make.left.equalTo(v2.snp_top).offset(50).constraint
- return
- }
-
- XCTAssertEqual(self.container.snp_constraints.count, 0, "Should have 0 constraints")
-
- c1?.activate()
- c2?.activate()
-
- XCTAssertEqual(self.container.snp_constraints.count, 2, "Should have 2 constraints")
-
- c1?.deactivate()
- c2?.deactivate()
-
- XCTAssertEqual(self.container.snp_constraints.count, 0, "Should have 0 constraints")
-
- c1?.uninstall()
- c2?.uninstall()
-
- XCTAssertEqual(self.container.snp_constraints.count, 0, "Should have 0 constraints")
-
- c1?.activate()
- c2?.activate()
-
- XCTAssertEqual(self.container.snp_constraints.count, 2, "Should have 2 constraints")
-
- }
-
-}