From d8c52ab8a63a86ac0cff490a3313c28c681e32ba Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Mon, 16 Mar 2020 11:58:36 -0400 Subject: [PATCH] fix molecule protocol type Update column molecule to allow for matching heights on each side. --- .../Categories/UIStackView+Extension.swift | 6 +- MVMCoreUI/Legacy/Views/MVMCoreUIPageControl.m | 2 +- .../ListTwoColumnCompareChanges.swift | 88 +++++++++---------- .../LeftRightViews/CornerLabels.swift | 2 +- .../StringAndMoleculeView.swift | 2 +- MVMCoreUI/Organisms/Stack.swift | 2 +- 6 files changed, 47 insertions(+), 55 deletions(-) diff --git a/MVMCoreUI/Categories/UIStackView+Extension.swift b/MVMCoreUI/Categories/UIStackView+Extension.swift index ae3b7ed9..e968fd7c 100644 --- a/MVMCoreUI/Categories/UIStackView+Extension.swift +++ b/MVMCoreUI/Categories/UIStackView+Extension.swift @@ -8,9 +8,7 @@ import Foundation -extension UIStackView: MoleculeViewProtocol { - public func setWithJSON(_ json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable : Any]?) {} - +extension UIStackView: MVMCoreUIMoleculeViewProtocol { public func updateView(_ size: CGFloat) { for view in arrangedSubviews { (view as? MVMCoreViewProtocol)?.updateView(size) @@ -19,7 +17,7 @@ extension UIStackView: MoleculeViewProtocol { public func reset() { for view in arrangedSubviews { - (view as? MoleculeViewProtocol)?.reset?() + (view as? MVMCoreUIMoleculeViewProtocol)?.reset?() } } } diff --git a/MVMCoreUI/Legacy/Views/MVMCoreUIPageControl.m b/MVMCoreUI/Legacy/Views/MVMCoreUIPageControl.m index 9a8f880f..f2b9976e 100644 --- a/MVMCoreUI/Legacy/Views/MVMCoreUIPageControl.m +++ b/MVMCoreUI/Legacy/Views/MVMCoreUIPageControl.m @@ -311,7 +311,7 @@ static CGFloat const IndicatorRectangleHeight = 4; self.currentPage = page; } -#pragma mark - MoleculeViewProtocol +#pragma mark - MVMCoreUIMoleculeViewProtocol - (void)setWithJSON:(NSDictionary *)json delegateObject:(MVMCoreUIDelegateObject *)delegateObject additionalData:(NSDictionary *)additionalData { NSString *colorString = [json string:KeyBackgroundColor]; diff --git a/MVMCoreUI/Molecules/DesignedComponents/SectionDividers/TwoColumn/ListTwoColumnCompareChanges.swift b/MVMCoreUI/Molecules/DesignedComponents/SectionDividers/TwoColumn/ListTwoColumnCompareChanges.swift index 47d65473..c007b8c7 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/SectionDividers/TwoColumn/ListTwoColumnCompareChanges.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/SectionDividers/TwoColumn/ListTwoColumnCompareChanges.swift @@ -23,9 +23,42 @@ import Foundation let rightHeadline3 = Label.commonLabelB1(true) let rightBody = Label.commonLabelB2(true) let rightLink = Link() - let containerView = View() - let leftVerticalStack = UIStackView() - let rightVerticalStack = UIStackView() + let containingStack: Stack + + //------------------------------------------------------ + // MARK: - Initializers + //------------------------------------------------------ + public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + let stackHeadline1 = Stack.createStack(with: [(view: leftHeadline1, model: StackItemModel(percent: 50, verticalAlignment: .leading)), + (view: rightHeadline1, model: StackItemModel(percent: 50, verticalAlignment: .leading))], + axis: .horizontal) + let stackHeadline2 = Stack.createStack(with: [(view: leftHeadline2, model: StackItemModel(percent: 50, verticalAlignment: .leading)), + (view: rightHeadline2, model: StackItemModel(percent: 50, verticalAlignment: .leading))], + axis: .horizontal) + let stackHeadline3 = Stack.createStack(with: [(view: leftHeadline3, model: StackItemModel(percent: 50, verticalAlignment: .leading)), + (view: rightHeadline3, model: StackItemModel(percent: 50, verticalAlignment: .leading))], + axis: .horizontal) + let stackBody = Stack.createStack(with: [(view: leftBody, model: StackItemModel(percent: 50, verticalAlignment: .leading)), + (view: rightBody, model: StackItemModel(percent: 50, verticalAlignment: .leading))], + axis: .horizontal) + let stackLink = Stack.createStack(with: [(view: leftLink, model: StackItemModel(percent: 50, verticalAlignment: .leading)), + (view: rightLink, model: StackItemModel(percent: 50, verticalAlignment: .leading))], + axis: .horizontal) + containingStack = Stack.createStack(with: [stackHeadline1, + stackHeadline2, + stackHeadline3, + stackBody, + stackLink], + spacing: 0) + containingStack.stackModel?.molecules[1].spacing = 5 + containingStack.stackModel?.molecules[2].spacing = 5 + containingStack.stackModel?.molecules[4].spacing = 5 + super.init(style: style, reuseIdentifier: reuseIdentifier) + } + + public required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } //------------------------------------------------------ // MARK: - Properties @@ -35,50 +68,13 @@ import Foundation //------------------------------------------------------- // MARK: - View Lifecycle //------------------------------------------------------- - open override func updateView(_ size: CGFloat) { - super.updateView(size) - leftLink.updateView(size) - rightLink.updateView(size) - } - open override func setupView() { super.setupView() - containerView.translatesAutoresizingMaskIntoConstraints = false - leftVerticalStack.translatesAutoresizingMaskIntoConstraints = false - rightVerticalStack.translatesAutoresizingMaskIntoConstraints = false - leftVerticalStack.addArrangedSubview(leftHeadline1) - leftVerticalStack.addArrangedSubview(leftHeadline2) - leftVerticalStack.addArrangedSubview(leftHeadline3) - leftVerticalStack.addArrangedSubview(leftBody) - leftVerticalStack.addArrangedSubview(leftLink) - leftVerticalStack.axis = .vertical - leftVerticalStack.alignment = .leading - rightVerticalStack.addArrangedSubview(rightHeadline1) - rightVerticalStack.addArrangedSubview(rightHeadline2) - rightVerticalStack.addArrangedSubview(rightHeadline3) - rightVerticalStack.addArrangedSubview(rightBody) - rightVerticalStack.addArrangedSubview(rightLink) - rightVerticalStack.axis = .vertical - rightVerticalStack.alignment = .leading - containerView.addSubview(leftVerticalStack) - containerView.addSubview(rightVerticalStack) - - //containerView constraints - contentView.addSubview(containerView) - containerHelper.constrainView(containerView) - NSLayoutConstraint.pinViews(leftView: leftVerticalStack, rightView: rightVerticalStack, alignTop: true) - - //leftVerticalStack constraints - leftVerticalStack.widthAnchor.constraint(equalTo: rightVerticalStack.widthAnchor, multiplier: 1).isActive = true - leftVerticalStack.heightAnchor.constraint(equalTo: rightVerticalStack.heightAnchor, multiplier: 1).isActive = true - leftVerticalStack.setCustomSpacing(stackSpacing, after: leftHeadline1) - leftVerticalStack.setCustomSpacing(stackSpacing, after: leftHeadline2) - leftVerticalStack.setCustomSpacing(stackSpacing, after: leftBody) - - //rightVerticalStack constraints - rightVerticalStack.setCustomSpacing(stackSpacing, after: rightHeadline1) - rightVerticalStack.setCustomSpacing(stackSpacing, after: rightHeadline2) - rightVerticalStack.setCustomSpacing(stackSpacing, after: rightBody) + addMolecule(containingStack) + for molecule in containingStack.stackItems { + ((molecule as? StackItem)?.view as? Stack)?.restack() + } + containingStack.restack() } //------------------------------------------------------ @@ -105,12 +101,10 @@ import Foundation leftHeadline2.styleB1(true) leftHeadline3.styleB1(true) leftBody.styleB2(true) - leftLink.reset() rightHeadline1.styleB1(true) rightHeadline2.styleB1(true) rightHeadline3.styleB1(true) rightBody.styleB2(true) - rightLink.reset() } public override class func estimatedHeight(with molecule: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat { diff --git a/MVMCoreUI/Molecules/LeftRightViews/CornerLabels.swift b/MVMCoreUI/Molecules/LeftRightViews/CornerLabels.swift index f7ae36de..bbdda6af 100644 --- a/MVMCoreUI/Molecules/LeftRightViews/CornerLabels.swift +++ b/MVMCoreUI/Molecules/LeftRightViews/CornerLabels.swift @@ -152,7 +152,7 @@ import UIKit styleDefault() spaceAboveMolecule = 6.0 spaceBelowMolecule = 6.0 - (middleView as? MoleculeViewProtocol)?.reset?() + (middleView as? MVMCoreUIMoleculeViewProtocol)?.reset?() } func styleDefault() { diff --git a/MVMCoreUI/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift b/MVMCoreUI/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift index 95392b8d..09ed8a7b 100644 --- a/MVMCoreUI/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift +++ b/MVMCoreUI/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift @@ -73,7 +73,7 @@ open class StringAndMoleculeView: View { override open func reset() { super.reset() label.reset() - (molecule as? MoleculeViewProtocol)?.reset?() + (molecule as? MVMCoreUIMoleculeViewProtocol)?.reset?() } public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) { diff --git a/MVMCoreUI/Organisms/Stack.swift b/MVMCoreUI/Organisms/Stack.swift index 696964f1..8fa220ec 100644 --- a/MVMCoreUI/Organisms/Stack.swift +++ b/MVMCoreUI/Organisms/Stack.swift @@ -135,7 +135,7 @@ open class Stack: Container where T: (StackModelProtocol & MoleculeModelProto super.reset() backgroundColor = .clear for item in stackItems { - (item as? MoleculeViewProtocol)?.reset?() + (item as? MVMCoreUIMoleculeViewProtocol)?.reset?() } }