Skip to content

Commit

Permalink
Merge pull request #13 from mirego/add_PinLayout_protocol
Browse files Browse the repository at this point in the history
Major rename + PinLayout protocol
  • Loading branch information
Luc Dion authored Mar 28, 2017
2 parents 78ac697 + 8031d36 commit cf61816
Show file tree
Hide file tree
Showing 25 changed files with 805 additions and 716 deletions.
14 changes: 9 additions & 5 deletions MCSwiftLayout.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
2419623A1E7F582C00A0466C /* Quick.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 241962381E7F582C00A0466C /* Quick.framework */; };
2419623C1E7F592800A0466C /* Nimble.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 241962371E7F582C00A0466C /* Nimble.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
2419623D1E7F592800A0466C /* Quick.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 241962381E7F582C00A0466C /* Quick.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
2439CC311E6659FA003326FB /* Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2439CC301E6659FA003326FB /* Layout.swift */; };
244C6E151E776A0C0074FC74 /* MarginsAndInsetsSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 244C6E141E776A0C0074FC74 /* MarginsAndInsetsSpec.swift */; };
2469C4FC1E74855D00073BEE /* PinEdgeCoordinateSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2469C4FB1E74855D00073BEE /* PinEdgeCoordinateSpec.swift */; };
2469C5001E75D74000073BEE /* AdjustSizeSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2469C4FF1E75D74000073BEE /* AdjustSizeSpec.swift */; };
Expand All @@ -25,6 +24,8 @@
DF11A3711E833F03008B33E5 /* Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF11A3701E833F03008B33E5 /* Types.swift */; };
DF11A3781E834B32008B33E5 /* UIView+PinLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF11A3771E834B32008B33E5 /* UIView+PinLayout.swift */; };
DF11A37A1E834B3F008B33E5 /* Coordinates.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF11A3791E834B3F008B33E5 /* Coordinates.swift */; };
DFC97CA51E8A8EB3001545D5 /* PinLayoutImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC97CA41E8A8EB3001545D5 /* PinLayoutImpl.swift */; };
DFC97CA71E8A8F2C001545D5 /* PinLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC97CA61E8A8F2C001545D5 /* PinLayout.swift */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
Expand Down Expand Up @@ -54,7 +55,6 @@
/* Begin PBXFileReference section */
241962371E7F582C00A0466C /* Nimble.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Nimble.framework; path = Carthage/Build/iOS/Nimble.framework; sourceTree = "<group>"; };
241962381E7F582C00A0466C /* Quick.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quick.framework; path = Carthage/Build/iOS/Quick.framework; sourceTree = "<group>"; };
2439CC301E6659FA003326FB /* Layout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Layout.swift; sourceTree = "<group>"; };
244C6E141E776A0C0074FC74 /* MarginsAndInsetsSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarginsAndInsetsSpec.swift; sourceTree = "<group>"; };
2469C4FB1E74855D00073BEE /* PinEdgeCoordinateSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PinEdgeCoordinateSpec.swift; sourceTree = "<group>"; };
2469C4FF1E75D74000073BEE /* AdjustSizeSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdjustSizeSpec.swift; sourceTree = "<group>"; };
Expand All @@ -71,6 +71,8 @@
DF11A3701E833F03008B33E5 /* Types.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Types.swift; sourceTree = "<group>"; };
DF11A3771E834B32008B33E5 /* UIView+PinLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+PinLayout.swift"; sourceTree = "<group>"; };
DF11A3791E834B3F008B33E5 /* Coordinates.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Coordinates.swift; sourceTree = "<group>"; };
DFC97CA41E8A8EB3001545D5 /* PinLayoutImpl.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PinLayoutImpl.swift; sourceTree = "<group>"; };
DFC97CA61E8A8F2C001545D5 /* PinLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PinLayout.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -126,10 +128,11 @@
249EFE7C1E64FB4C00165E39 /* MCSwiftLayout */ = {
isa = PBXGroup;
children = (
DFC97CA61E8A8F2C001545D5 /* PinLayout.swift */,
DFC97CA41E8A8EB3001545D5 /* PinLayoutImpl.swift */,
DF11A3701E833F03008B33E5 /* Types.swift */,
DF11A3751E834194008B33E5 /* Extensions */,
DF11A3761E8341A2008B33E5 /* Helpers */,
2439CC301E6659FA003326FB /* Layout.swift */,
DF11A3701E833F03008B33E5 /* Types.swift */,
);
path = MCSwiftLayout;
sourceTree = "<group>";
Expand Down Expand Up @@ -309,8 +312,9 @@
files = (
DF11A3711E833F03008B33E5 /* Types.swift in Sources */,
DF11A3781E834B32008B33E5 /* UIView+PinLayout.swift in Sources */,
2439CC311E6659FA003326FB /* Layout.swift in Sources */,
DF11A37A1E834B3F008B33E5 /* Coordinates.swift in Sources */,
DFC97CA71E8A8F2C001545D5 /* PinLayout.swift in Sources */,
DFC97CA51E8A8EB3001545D5 /* PinLayoutImpl.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
22 changes: 0 additions & 22 deletions MCSwiftLayout/Extensions/UIView+PinLayout.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,6 @@

import UIKit

public extension UIView {
public var layout: Layout {
return Layout(view: self)
}

public var pin: PinList {
return PinList(view: self)
}

// public var pin: Layout {
// return Layout(view: self)
// }

public var edge: EdgeList {
return EdgeList(view: self)
}

// func layout(with layout: Layout) {
// layout.apply(onView: self)
// }
}

// Could be part of another GitHub repo?
public extension UIView {
public var top: CGFloat {
Expand Down
121 changes: 121 additions & 0 deletions MCSwiftLayout/PinLayout.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
//
// PinLayout.swift
// MCSwiftLayout
//
// Created by Luc Dion on 2017-03-28.
// Copyright © 2017 mcswiftlayyout.mirego.com. All rights reserved.
//

import Foundation

public extension UIView {
public var pin: PinLayout {
return PinLayoutImpl(view: self)
}

public var anchor: PinList {
return PinList(view: self)
}

public var edge: EdgeList {
return EdgeList(view: self)
}
}

public protocol PinLayout {
@discardableResult func top(_ value: CGFloat) -> PinLayout
@discardableResult func left(_ value: CGFloat) -> PinLayout
@discardableResult func bottom(_ value: CGFloat) -> PinLayout
@discardableResult func right(_ value: CGFloat) -> PinLayout

@discardableResult func top(to edge: VerticalEdge) -> PinLayout
@discardableResult func left(to edge: HorizontalEdge) -> PinLayout
@discardableResult func bottom(to edge: VerticalEdge) -> PinLayout
@discardableResult func right(to edge: HorizontalEdge) -> PinLayout

@discardableResult func topLeft(to point: CGPoint) -> PinLayout
@discardableResult func topLeft(to pin: Pin) -> PinLayout
@discardableResult func topLeft() -> PinLayout

@discardableResult func topCenter(to point: CGPoint) -> PinLayout
@discardableResult func topCenter(to pin: Pin) -> PinLayout
@discardableResult func topCenter() -> PinLayout

@discardableResult func topRight(to point: CGPoint) -> PinLayout
@discardableResult func topRight(to pin: Pin) -> PinLayout
@discardableResult func topRight() -> PinLayout

@discardableResult func leftCenter(to point: CGPoint) -> PinLayout
@discardableResult func leftCenter(to pin: Pin) -> PinLayout
@discardableResult func leftCenter() -> PinLayout

@discardableResult func center(to point: CGPoint) -> PinLayout
@discardableResult func center(to pin: Pin) -> PinLayout
@discardableResult func center() -> PinLayout

@discardableResult func rightCenter(to point: CGPoint) -> PinLayout
@discardableResult func rightCenter(to pin: Pin) -> PinLayout
@discardableResult func rightCenter() -> PinLayout

@discardableResult func bottomLeft(to point: CGPoint) -> PinLayout
@discardableResult func bottomLeft(to pin: Pin) -> PinLayout
@discardableResult func bottomLeft() -> PinLayout

@discardableResult func bottomCenter(to point: CGPoint) -> PinLayout
@discardableResult func bottomCenter(to pin: Pin) -> PinLayout
@discardableResult func bottomCenter() -> PinLayout

@discardableResult func bottomRight(to point: CGPoint) -> PinLayout
@discardableResult func bottomRight(to pin: Pin) -> PinLayout
@discardableResult func bottomRight() -> PinLayout

@discardableResult func above(of relativeView: UIView) -> PinLayout
@discardableResult func above(of relativeView: UIView, aligned: HorizontalAlignment) -> PinLayout
@discardableResult func below(of relativeView: UIView) -> PinLayout
@discardableResult func below(of relativeView: UIView, aligned: HorizontalAlignment) -> PinLayout
@discardableResult func left(of relativeView: UIView) -> PinLayout
@discardableResult func left(of relativeView: UIView, aligned: VerticalAlignment) -> PinLayout
@discardableResult func right(of relativeView: UIView) -> PinLayout
@discardableResult func right(of relativeView: UIView, aligned: VerticalAlignment) -> PinLayout

@discardableResult func width(_ width: CGFloat) -> PinLayout
@discardableResult func width(percent: CGFloat) -> PinLayout
@discardableResult func width(of view: UIView) -> PinLayout
@discardableResult func height(_ height: CGFloat) -> PinLayout
@discardableResult func height(percent: CGFloat) -> PinLayout
@discardableResult func height(of view: UIView) -> PinLayout
@discardableResult func size(_ size: CGSize) -> PinLayout
@discardableResult func size(of view: UIView) -> PinLayout
@discardableResult func sizeToFit() -> PinLayout

@discardableResult func margin(_ value: CGFloat) -> PinLayout
@discardableResult func marginHorizontal(_ value: CGFloat) -> PinLayout
@discardableResult func marginVertical(_ value: CGFloat) -> PinLayout
@discardableResult func marginTop(_ value: CGFloat) -> PinLayout
@discardableResult func marginLeft(_ value: CGFloat) -> PinLayout
@discardableResult func marginBottom(_ value: CGFloat) -> PinLayout
@discardableResult func marginRight(_ value: CGFloat) -> PinLayout

@discardableResult func inset(_ value: CGFloat) -> PinLayout
@discardableResult func insetTop(_ value: CGFloat) -> PinLayout
@discardableResult func insetLeft(_ value: CGFloat) -> PinLayout
@discardableResult func insetBottom(_ value: CGFloat) -> PinLayout
@discardableResult func insetRight(_ value: CGFloat) -> PinLayout
@discardableResult func insetHorizontal(_ value: CGFloat) -> PinLayout
@discardableResult func insetVertical(_ value: CGFloat) -> PinLayout
}

// RELATIVE POSITION
public enum HorizontalAlignment: String {
case left
case center
case right
}

public enum VerticalAlignment: String {
case top
case center
case bottom
}


Loading

0 comments on commit cf61816

Please sign in to comment.