refactored to use new methods

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2023-06-15 12:42:59 -05:00
parent d3e8889674
commit d345e8cb32
2 changed files with 36 additions and 39 deletions

View File

@ -10,44 +10,27 @@ import VDS
import UIKit import UIKit
extension UIView { extension UIView {
public static func makeWrapper(for view: UIView, edgeSpacing: CGFloat = 0.0, isTrailing: Bool = true) -> 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 static func makeWrapperWithConstraints(for view: UIView, edgeSpacing: CGFloat = 0.0, isTrailing: Bool = true) -> (view: UIView, container: NSLayoutConstraint.Container) {
public var view: UIView let container = NSLayoutConstraint.Container()
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 {
let wrapper = UIView().with { let wrapper = UIView().with {
$0.translatesAutoresizingMaskIntoConstraints = false $0.translatesAutoresizingMaskIntoConstraints = false
} }
wrapper.addSubview(view) wrapper.addSubview(view)
view.pinTop(wrapper.topAnchor, edgeSpacing) container.topConstraint = view.pinTop(anchor: wrapper.topAnchor, constant: edgeSpacing)
view.pinBottom(wrapper.bottomAnchor, edgeSpacing) container.bottomConstraint = view.pinBottom(anchor: wrapper.bottomAnchor, constant: edgeSpacing)
view.pinLeading(wrapper.leadingAnchor, edgeSpacing) container.leadingConstraint = view.pinLeading(anchor: wrapper.leadingAnchor, constant: edgeSpacing)
if isTrailing { if isTrailing {
view.pinTrailingLessThanOrEqualTo(wrapper.trailingAnchor, edgeSpacing) container.trailingConstraint = view.pinTrailingLessThanOrEqualTo(anchor: wrapper.trailingAnchor, constant: edgeSpacing)
} else { } else {
view.pinTrailing(wrapper.trailingAnchor, edgeSpacing) container.trailingConstraint = view.pinTrailing(anchor: wrapper.trailingAnchor, constant: edgeSpacing)
} }
return WrappedViewHelper(view: wrapper) return (wrapper, container)
} }
} }

View File

@ -26,7 +26,9 @@ class DropShadowViewController: BaseViewController<View> {
var viewSpacerRange = Slider() var viewSpacerRange = Slider()
var viewSize: CGFloat = 100.0 var viewSize: CGFloat = 100.0
var wrappedHelper: UIView.WrappedViewHelper! var componentWrapper: UIView!
var componentConstraints: NSLayoutConstraint.Container!
var secondView = View() var secondView = View()
var thirdView = View() var thirdView = View()
@ -54,9 +56,18 @@ class DropShadowViewController: BaseViewController<View> {
items: UIColor.VDSColor.allCases) items: UIColor.VDSColor.allCases)
}() }()
var spacer: Float = 10 { var spacer: CGFloat = 10 {
didSet { 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<View> {
override func viewDidLoad() { override func viewDidLoad() {
super.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(secondView)
contentTopView.addSubview(thirdView) contentTopView.addSubview(thirdView)
contentTopView.addSubview(wrappedHelper.view) contentTopView.addSubview(componentWrapper)
component.width(viewSize).height(viewSize) component.width(viewSize).height(viewSize)
secondView.width(viewSize).height(viewSize) secondView.width(viewSize).height(viewSize)
thirdView.width(viewSize).height(viewSize) thirdView.width(viewSize).height(viewSize)
wrappedHelper.view.pinTop().pinLeading() componentWrapper.pinTop().pinLeading()
secondView.pinTop() secondView.pinTop()
thirdView.pinLeading().pinBottom() thirdView.pinLeading().pinBottom()
@ -82,11 +96,11 @@ class DropShadowViewController: BaseViewController<View> {
secondView.pinBottomLessThanOrEqualTo(contentTopView.bottomAnchor) secondView.pinBottomLessThanOrEqualTo(contentTopView.bottomAnchor)
thirdView.pinTrailingLessThanOrEqualTo(contentTopView.trailingAnchor) thirdView.pinTrailingLessThanOrEqualTo(contentTopView.trailingAnchor)
spacings.append(thirdView.topAnchor.constraint(equalTo: wrappedHelper.view.bottomAnchor)) spacings.append(thirdView.topAnchor.constraint(equalTo: componentWrapper.bottomAnchor))
spacings.append(secondView.leadingAnchor.constraint(equalTo: wrappedHelper.view.trailingAnchor)) spacings.append(secondView.leadingAnchor.constraint(equalTo: componentWrapper.trailingAnchor))
spacings.forEach{ $0.isActive = true } spacings.forEach{ $0.isActive = true }
wrappedHelper.viewPadding = 10 viewPadding = 10
setupPicker() setupPicker()
setupModel() setupModel()
@ -96,7 +110,7 @@ class DropShadowViewController: BaseViewController<View> {
override func showDebug(show: Bool) { override func showDebug(show: Bool) {
super.showDebug(show: show) super.showDebug(show: show)
component.debugBorder(show: false) component.debugBorder(show: false)
wrappedHelper.view.debugBorder(show: show, color: .green) componentWrapper.debugBorder(show: show, color: .green)
secondView.debugBorder(show: show, color: .green) secondView.debugBorder(show: show, color: .green)
thirdView.debugBorder(show: show, color: .green) thirdView.debugBorder(show: show, color: .green)
} }
@ -149,7 +163,7 @@ class DropShadowViewController: BaseViewController<View> {
viewPaddingRange.minimumValue = 0.0 viewPaddingRange.minimumValue = 0.0
viewPaddingRange.value = 2.0 viewPaddingRange.value = 2.0
viewPaddingRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in viewPaddingRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in
self?.wrappedHelper.viewPadding = CGFloat(slider.value) self?.viewPadding = CGFloat(slider.value)
self?.updateView() self?.updateView()
}).store(in: &subscribers) }).store(in: &subscribers)
@ -164,7 +178,7 @@ class DropShadowViewController: BaseViewController<View> {
viewSpacerRange.minimumValue = 0 viewSpacerRange.minimumValue = 0
viewSpacerRange.value = 10.0 viewSpacerRange.value = 10.0
viewSpacerRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in viewSpacerRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in
self?.spacer = slider.value self?.spacer = CGFloat(slider.value)
}).store(in: &subscribers) }).store(in: &subscribers)
dropShadowLightColorPickerSelectorView.text = shadowLightColor.rawValue dropShadowLightColorPickerSelectorView.text = shadowLightColor.rawValue