From d345e8cb32d07f659ce7b31127b89ee919af5768 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 15 Jun 2023 12:42:59 -0500 Subject: [PATCH] refactored to use new methods Signed-off-by: Matt Bruce --- VDSSample/Classes/Helper.swift | 37 +++++------------- .../DropShawdowViewController.swift | 38 +++++++++++++------ 2 files changed, 36 insertions(+), 39 deletions(-) diff --git a/VDSSample/Classes/Helper.swift b/VDSSample/Classes/Helper.swift index 602b41e..0809cdb 100644 --- a/VDSSample/Classes/Helper.swift +++ b/VDSSample/Classes/Helper.swift @@ -10,44 +10,27 @@ import VDS import UIKit extension UIView { - + public static func makeWrapper(for view: UIView, edgeSpacing: CGFloat = 0.0, isTrailing: Bool = true) -> UIView { - return makeWrappedView(for: view, edgeSpacing: edgeSpacing, isTrailing: isTrailing).view + return makeWrapperWithConstraints(for: view, edgeSpacing: edgeSpacing, isTrailing: isTrailing).view } - public class WrappedViewHelper { - public var view: UIView - - var viewPadding: CGFloat = 0 { - didSet { - view._topConstraint?.constant = viewPadding - view._leadingConstraint?.constant = viewPadding - view._trailingConstraint?.constant = -viewPadding - view._bottomConstraint?.constant = -viewPadding - } - } - - public init(view: UIView) { - self.view = view - } - } - - public static func makeWrappedView(for view: UIView, edgeSpacing: CGFloat = 0.0, isTrailing: Bool = true) -> WrappedViewHelper { + public static func makeWrapperWithConstraints(for view: UIView, edgeSpacing: CGFloat = 0.0, isTrailing: Bool = true) -> (view: UIView, container: NSLayoutConstraint.Container) { + let container = NSLayoutConstraint.Container() let wrapper = UIView().with { $0.translatesAutoresizingMaskIntoConstraints = false } wrapper.addSubview(view) - view.pinTop(wrapper.topAnchor, edgeSpacing) - view.pinBottom(wrapper.bottomAnchor, edgeSpacing) - view.pinLeading(wrapper.leadingAnchor, edgeSpacing) - + container.topConstraint = view.pinTop(anchor: wrapper.topAnchor, constant: edgeSpacing) + container.bottomConstraint = view.pinBottom(anchor: wrapper.bottomAnchor, constant: edgeSpacing) + container.leadingConstraint = view.pinLeading(anchor: wrapper.leadingAnchor, constant: edgeSpacing) if isTrailing { - view.pinTrailingLessThanOrEqualTo(wrapper.trailingAnchor, edgeSpacing) + container.trailingConstraint = view.pinTrailingLessThanOrEqualTo(anchor: wrapper.trailingAnchor, constant: edgeSpacing) } else { - view.pinTrailing(wrapper.trailingAnchor, edgeSpacing) + container.trailingConstraint = view.pinTrailing(anchor: wrapper.trailingAnchor, constant: edgeSpacing) } - return WrappedViewHelper(view: wrapper) + return (wrapper, container) } } diff --git a/VDSSample/ViewControllers/DropShawdowViewController.swift b/VDSSample/ViewControllers/DropShawdowViewController.swift index 13daff4..16c2115 100644 --- a/VDSSample/ViewControllers/DropShawdowViewController.swift +++ b/VDSSample/ViewControllers/DropShawdowViewController.swift @@ -26,7 +26,9 @@ class DropShadowViewController: BaseViewController { var viewSpacerRange = Slider() var viewSize: CGFloat = 100.0 - var wrappedHelper: UIView.WrappedViewHelper! + var componentWrapper: UIView! + var componentConstraints: NSLayoutConstraint.Container! + var secondView = View() var thirdView = View() @@ -54,9 +56,18 @@ class DropShadowViewController: BaseViewController { items: UIColor.VDSColor.allCases) }() - var spacer: Float = 10 { + var spacer: CGFloat = 10 { didSet { - spacings.forEach{ $0.constant = CGFloat(spacer) } + spacings.forEach{ $0.constant = spacer } + } + } + + var viewPadding: CGFloat = 0 { + didSet { + componentConstraints.topConstraint?.constant = viewPadding + componentConstraints.leadingConstraint?.constant = viewPadding + componentConstraints.trailingConstraint?.constant = -viewPadding + componentConstraints.bottomConstraint?.constant = -viewPadding } } @@ -65,16 +76,19 @@ class DropShadowViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() - wrappedHelper = UIView.makeWrappedView(for: component, isTrailing: false) + let wrapper = UIView.makeWrapperWithConstraints(for: component, isTrailing: false) + componentWrapper = wrapper.view + componentConstraints = wrapper.container + contentTopView.addSubview(secondView) contentTopView.addSubview(thirdView) - contentTopView.addSubview(wrappedHelper.view) + contentTopView.addSubview(componentWrapper) component.width(viewSize).height(viewSize) secondView.width(viewSize).height(viewSize) thirdView.width(viewSize).height(viewSize) - wrappedHelper.view.pinTop().pinLeading() + componentWrapper.pinTop().pinLeading() secondView.pinTop() thirdView.pinLeading().pinBottom() @@ -82,11 +96,11 @@ class DropShadowViewController: BaseViewController { secondView.pinBottomLessThanOrEqualTo(contentTopView.bottomAnchor) thirdView.pinTrailingLessThanOrEqualTo(contentTopView.trailingAnchor) - spacings.append(thirdView.topAnchor.constraint(equalTo: wrappedHelper.view.bottomAnchor)) - spacings.append(secondView.leadingAnchor.constraint(equalTo: wrappedHelper.view.trailingAnchor)) + spacings.append(thirdView.topAnchor.constraint(equalTo: componentWrapper.bottomAnchor)) + spacings.append(secondView.leadingAnchor.constraint(equalTo: componentWrapper.trailingAnchor)) spacings.forEach{ $0.isActive = true } - wrappedHelper.viewPadding = 10 + viewPadding = 10 setupPicker() setupModel() @@ -96,7 +110,7 @@ class DropShadowViewController: BaseViewController { override func showDebug(show: Bool) { super.showDebug(show: show) component.debugBorder(show: false) - wrappedHelper.view.debugBorder(show: show, color: .green) + componentWrapper.debugBorder(show: show, color: .green) secondView.debugBorder(show: show, color: .green) thirdView.debugBorder(show: show, color: .green) } @@ -149,7 +163,7 @@ class DropShadowViewController: BaseViewController { viewPaddingRange.minimumValue = 0.0 viewPaddingRange.value = 2.0 viewPaddingRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in - self?.wrappedHelper.viewPadding = CGFloat(slider.value) + self?.viewPadding = CGFloat(slider.value) self?.updateView() }).store(in: &subscribers) @@ -164,7 +178,7 @@ class DropShadowViewController: BaseViewController { viewSpacerRange.minimumValue = 0 viewSpacerRange.value = 10.0 viewSpacerRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in - self?.spacer = slider.value + self?.spacer = CGFloat(slider.value) }).store(in: &subscribers) dropShadowLightColorPickerSelectorView.text = shadowLightColor.rawValue