From 7be08fe9bea1fb2c5c450c296a2d546e79fe6495 Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Tue, 25 Feb 2020 14:20:46 -0500 Subject: [PATCH] Stack fixes --- ...istOneColumnFullWidthTextAllTextAndLinks.swift | 15 ++++++++------- MVMCoreUI/Organisms/Stack.swift | 4 ++-- MVMCoreUI/Organisms/StackModel.swift | 5 ++++- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/MVMCoreUI/Molecules/DesignedComponents/SectionDividers/OneColumn/ListOneColumnFullWidthTextAllTextAndLinks.swift b/MVMCoreUI/Molecules/DesignedComponents/SectionDividers/OneColumn/ListOneColumnFullWidthTextAllTextAndLinks.swift index 9e930396..6f0ed557 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/SectionDividers/OneColumn/ListOneColumnFullWidthTextAllTextAndLinks.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/SectionDividers/OneColumn/ListOneColumnFullWidthTextAllTextAndLinks.swift @@ -36,22 +36,23 @@ import Foundation open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?){ super.setWithModel(model, delegateObject, additionalData) - guard let model = model as? ListOneColumnFullWidthTextAllTextAndLinksModel else { return} + guard let model = model as? ListOneColumnFullWidthTextAllTextAndLinksModel else { return } eyebrow.setWithModel(model.eyebrow, delegateObject, additionalData) headline.setWithModel(model.headline, delegateObject, additionalData) subHeadline.setWithModel(model.subHeadline, delegateObject, additionalData) body.setWithModel(model.body, delegateObject, additionalData) link.setWithModel(model.link, delegateObject, additionalData) - let stackModel = StackModel(molecules: [StackItemModel(spacing: 2, gone: !eyebrow.hasText), - StackItemModel(spacing: 2, gone: !headline.hasText), - StackItemModel(spacing: 2, gone: !subHeadline.hasText), - StackItemModel(spacing: 2, gone: !body.hasText), - StackItemModel(spacing: 2, gone: (link.titleLabel?.text?.count ?? 0) == 0)]) + let stackModel = StackModel(molecules: [StackItemModel(gone: !eyebrow.hasText), + StackItemModel(gone: !headline.hasText), + StackItemModel(gone: !subHeadline.hasText), + StackItemModel(gone: !body.hasText), + StackItemModel(spacing: 2, gone: (link.titleLabel?.text?.count ?? 0) == 0)], + spacing: 0) stack.model = stackModel stack.restack() } - open override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat?{ + open override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? { return 90 } diff --git a/MVMCoreUI/Organisms/Stack.swift b/MVMCoreUI/Organisms/Stack.swift index 602ab0f1..0226412b 100644 --- a/MVMCoreUI/Organisms/Stack.swift +++ b/MVMCoreUI/Organisms/Stack.swift @@ -237,7 +237,7 @@ open class Stack: Container where T: StackModelProtocol { if first { pinView(view, toView: contentView, attribute: .top, relation: .equal, priority: .required, constant: stackModel.useStackSpacingBeforeFirstItem ? spacing : model.spacing ?? 0) } else if let previousView = stackItems.last(where: { item in - return !model.gone + return item.superview != nil }) { view.topAnchor.constraint(equalTo: previousView.bottomAnchor, constant: spacing).isActive = true } @@ -256,7 +256,7 @@ open class Stack: Container where T: StackModelProtocol { // First horizontal item has no spacing by default unless told otherwise. pinView(view, toView: contentView, attribute: .leading, relation: .equal, priority: .required, constant: stackModel.useStackSpacingBeforeFirstItem ? spacing : model.spacing ?? 0) } else if let previousView = stackItems.last(where: { item in - return !model.gone + return item.superview != nil }) { view.leftAnchor.constraint(equalTo: previousView.rightAnchor, constant: spacing).isActive = true } diff --git a/MVMCoreUI/Organisms/StackModel.swift b/MVMCoreUI/Organisms/StackModel.swift index b762a03c..93712612 100644 --- a/MVMCoreUI/Organisms/StackModel.swift +++ b/MVMCoreUI/Organisms/StackModel.swift @@ -16,9 +16,12 @@ import Foundation public var spacing: CGFloat = 16.0 public var useStackSpacingBeforeFirstItem = false - public init(molecules: [StackItemModel], axis: NSLayoutConstraint.Axis = .vertical) { + public init(molecules: [StackItemModel], axis: NSLayoutConstraint.Axis = .vertical, spacing: CGFloat? = nil) { self.molecules = molecules self.axis = axis + if let spacing = spacing { + self.spacing = spacing + } } private enum CodingKeys: String, CodingKey {