Skip to content

Commit

Permalink
Improved MarginConstraintFactory ♻️
Browse files Browse the repository at this point in the history
  • Loading branch information
chicio committed Jan 29, 2021
1 parent e876afd commit cd3c085
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 16 deletions.
4 changes: 4 additions & 0 deletions RangeUISlider.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
450C7B6825C48A7500764496 /* RangeSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 450C7B6225C48A7400764496 /* RangeSlider.swift */; };
450C7B6925C48A7500764496 /* Gradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 450C7B6325C48A7400764496 /* Gradient.swift */; };
450C7B6A25C48A7500764496 /* Knob.swift in Sources */ = {isa = PBXBuildFile; fileRef = 450C7B6425C48A7400764496 /* Knob.swift */; };
450C7B7525C490C100764496 /* ContraintViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 450C7B7425C490C100764496 /* ContraintViews.swift */; };
4520C27125A349F00018042D /* SwiftUIHostingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4520C27025A349F00018042D /* SwiftUIHostingViewController.swift */; };
455BF125259B44F80026BE56 /* InsideTableViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 455BF124259B44F80026BE56 /* InsideTableViewTests.swift */; };
455BF12E259B4B2D0026BE56 /* ProgrammaticKnobChangeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 455BF12D259B4B2D0026BE56 /* ProgrammaticKnobChangeTests.swift */; };
Expand Down Expand Up @@ -98,6 +99,7 @@
450C7B6225C48A7400764496 /* RangeSlider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RangeSlider.swift; sourceTree = "<group>"; };
450C7B6325C48A7400764496 /* Gradient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Gradient.swift; sourceTree = "<group>"; };
450C7B6425C48A7400764496 /* Knob.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Knob.swift; sourceTree = "<group>"; };
450C7B7425C490C100764496 /* ContraintViews.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContraintViews.swift; sourceTree = "<group>"; };
451E91D925C47B1200A2843D /* AllTestPlan.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = AllTestPlan.xctestplan; sourceTree = "<group>"; };
4520C27025A349F00018042D /* SwiftUIHostingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIHostingViewController.swift; sourceTree = "<group>"; };
455BF124259B44F80026BE56 /* InsideTableViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsideTableViewTests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -185,6 +187,7 @@
450C7B4B25C489E200764496 /* CenterConstraintFactory.swift */,
450C7B4C25C489E200764496 /* DimensionConstraintFactory.swift */,
450C7B4D25C489E200764496 /* MarginConstraintFactory.swift */,
450C7B7425C490C100764496 /* ContraintViews.swift */,
);
path = Constraint;
sourceTree = "<group>";
Expand Down Expand Up @@ -572,6 +575,7 @@
450C7B4F25C489E200764496 /* DimensionConstraintFactory.swift in Sources */,
450C7B6525C48A7500764496 /* Progress.swift in Sources */,
450C7B6825C48A7500764496 /* RangeSlider.swift in Sources */,
450C7B7525C490C100764496 /* ContraintViews.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
19 changes: 19 additions & 0 deletions Source/Constraint/ContraintViews.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//
// ContraintViews.swift
// RangeUISlider
//
// Created by Fabrizio Duroni on 29/01/21.
// Copyright © 2021 Fabrizio Duroni. All rights reserved.
//

import Foundation

class ContraintViews {
unowned let target: UIView
unowned let parent: UIView?

init(target: UIView, parent: UIView? = nil) {
self.target = target
self.parent = parent
}
}
27 changes: 11 additions & 16 deletions Source/Constraint/MarginConstraintFactory.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,52 +10,47 @@ import Foundation
import UIKit

class MarginConstraintFactory {
static func leadingConstraint(target: Any, parent: Any?, value: CGFloat) -> NSLayoutConstraint {
static func leadingConstraint(target: UIView, parent: UIView?, value: CGFloat) -> NSLayoutConstraint {
return MarginConstraintFactory.make(
target: target,
parent: parent,
views: ContraintViews(target: target, parent: parent),
margin: .leading,
value: value
)
}

static func trailingConstraint(target: Any, parent: Any?, value: CGFloat) -> NSLayoutConstraint {
static func trailingConstraint(target: UIView, parent: UIView?, value: CGFloat) -> NSLayoutConstraint {
return MarginConstraintFactory.make(
target: target,
parent: parent,
views: ContraintViews(target: target, parent: parent),
margin: .trailing,
value: value
)
}

static func topConstraint(target: Any, parent: Any?, value: CGFloat) -> NSLayoutConstraint {
static func topConstraint(target: UIView, parent: UIView?, value: CGFloat) -> NSLayoutConstraint {
return MarginConstraintFactory.make(
target: target,
parent: parent,
views: ContraintViews(target: target, parent: parent),
margin: .top,
value: value
)
}

static func bottomConstraint(target: Any, parent: Any?, value: CGFloat) -> NSLayoutConstraint {
static func bottomConstraint(target: UIView, parent: UIView?, value: CGFloat) -> NSLayoutConstraint {
return MarginConstraintFactory.make(
target: target,
parent: parent,
views: ContraintViews(target: target, parent: parent),
margin: .bottom,
value: value
)
}

private static func make(
target: Any,
parent: Any?,
views: ContraintViews,
margin: NSLayoutConstraint.Attribute,
value: CGFloat
) -> NSLayoutConstraint {
return NSLayoutConstraint(item: target,
return NSLayoutConstraint(item: views.target,
attribute: margin,
relatedBy: .equal,
toItem: parent,
toItem: views.parent,
attribute: margin,
multiplier: 1.0,
constant: value)
Expand Down

0 comments on commit cd3c085

Please sign in to comment.