From 817e4cb7bab3c4cc09b1ebc4049097325f122a23 Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Fri, 3 Apr 2020 15:22:21 -0400 Subject: [PATCH] multi progress changes --- .../Atomic/Atoms/Views/MultiProgress.swift | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/MultiProgress.swift b/MVMCoreUI/Atomic/Atoms/Views/MultiProgress.swift index adf480c2..67a5f840 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/MultiProgress.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/MultiProgress.swift @@ -9,31 +9,38 @@ import UIKit @objcMembers open class MultiProgress: View { + private let stack = Stack() var multiProgressModel: MultiProgressBarModel? { get { return model as? MultiProgressBarModel } } - + + public required init(model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) { + super.init(frame: .zero) + set(with: model, delegateObject, additionalData) + } + + public required init?(coder: NSCoder) { + super.init(coder: coder) + } + + public override init(frame: CGRect) { + super.init(frame: frame) + } + ///passing value to progressList creates corresponding progress bars var progressList: Array? { didSet { - for subview in subviews { - subview.removeFromSuperview() - } - guard (progressList?.count ?? 0) > 0 else { - return - } - var previous: UIView? + stack.removeAllItemViews() + guard (progressList?.count ?? 0) > 0 else { return } + var viewModels: [(view: UIView, model: StackItemModel)] = [] for progressObject in progressList! { guard progressObject.percent > 0.0 else { continue } - let view = UIView(frame: .zero) - view.translatesAutoresizingMaskIntoConstraints = false - addSubview(view) - view.backgroundColor = progressObject.color.uiColor - view.widthAnchor.constraint(equalTo: widthAnchor, multiplier: progressObject.percent/100.0).isActive = true - view.leadingAnchor.constraint(equalTo: previous?.trailingAnchor ?? leadingAnchor).isActive = true - previous = view - NSLayoutConstraint.constraintPinSubview(view, pinTop: true, pinBottom: true, pinLeft: false, pinRight: false) + let model = StackItemModel(spacing: 0, percent: Int(progressObject.percent), horizontalAlignment: .fill, verticalAlignment: .fill) + model.backgroundColor = progressObject.color + viewModels.append((view: StackItem(frame: .zero), model: model)) } + stack.set(with: viewModels) + stack.restack() } } @@ -55,6 +62,8 @@ import UIKit translatesAutoresizingMaskIntoConstraints = false backgroundColor = .mfLightSilver() clipsToBounds = true + addSubview(stack) + NSLayoutConstraint.constraintPinSubview(toSuperview: stack) if thicknessConstraint == nil { thicknessConstraint = heightAnchor.constraint(equalToConstant: defaultHeight) thicknessConstraint?.isActive = true