add MultiProgress

This commit is contained in:
panxi 2019-09-09 16:42:38 -04:00
parent 814d470775
commit dcd87fb924
3 changed files with 71 additions and 0 deletions

View File

@ -18,6 +18,7 @@
01DF567021FA5AB300CC099B /* TextFieldListFormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DF566F21FA5AB300CC099B /* TextFieldListFormViewController.swift */; };
01E569D3223FFFA500327251 /* ThreeLayerViewController.swift in Headers */ = {isa = PBXBuildFile; fileRef = D2A5146A2214905000345BFB /* ThreeLayerViewController.swift */; settings = {ATTRIBUTES = (Public, ); }; };
0A1214A022C11A18007C7030 /* ActionDetailWithImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A12149F22C11A17007C7030 /* ActionDetailWithImage.swift */; };
948DB67E2326DCD90011F916 /* MultiProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 948DB67D2326DCD90011F916 /* MultiProgress.swift */; };
B8200E152280C4CF007245F4 /* ProgressBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8200E142280C4CF007245F4 /* ProgressBar.swift */; };
B8200E192281DC1A007245F4 /* CornerLabels.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8200E182281DC1A007245F4 /* CornerLabels.swift */; };
D206997721FB8A0B00CAE0DE /* MVMCoreUINavigationController.h in Headers */ = {isa = PBXBuildFile; fileRef = D206997521FB8A0B00CAE0DE /* MVMCoreUINavigationController.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -200,6 +201,7 @@
01DF55DF21F8FAA800CC099B /* MFTextFieldListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MFTextFieldListView.swift; sourceTree = "<group>"; };
01DF566F21FA5AB300CC099B /* TextFieldListFormViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextFieldListFormViewController.swift; sourceTree = "<group>"; };
0A12149F22C11A17007C7030 /* ActionDetailWithImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActionDetailWithImage.swift; sourceTree = "<group>"; };
948DB67D2326DCD90011F916 /* MultiProgress.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiProgress.swift; sourceTree = "<group>"; };
B8200E142280C4CF007245F4 /* ProgressBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProgressBar.swift; sourceTree = "<group>"; };
B8200E182281DC1A007245F4 /* CornerLabels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CornerLabels.swift; sourceTree = "<group>"; };
D206997521FB8A0B00CAE0DE /* MVMCoreUINavigationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUINavigationController.h; sourceTree = "<group>"; };
@ -681,6 +683,7 @@
D260D7B022D65BDD007E7233 /* MVMCoreUIPageControl.m */,
D260D7B522D68509007E7233 /* MVMCoreUIPagingProtocol.h */,
B8200E142280C4CF007245F4 /* ProgressBar.swift */,
948DB67D2326DCD90011F916 /* MultiProgress.swift */,
DBC4391622442196001AB423 /* CaretView.swift */,
DBC4391722442197001AB423 /* DashLine.swift */,
DB06250A2293456500B72DD3 /* LeftRightLabelView.swift */,
@ -1068,6 +1071,7 @@
D20A9A5E2243D3E300ADE781 /* TwoButtonView.swift in Sources */,
D2B1E3E522F37D6A0065F95C /* ImageHeadlineBody.swift in Sources */,
D29DF2AA21E7B2F9003B2FB9 /* MVMCoreUIConstants.m in Sources */,
948DB67E2326DCD90011F916 /* MultiProgress.swift in Sources */,
D2A5146122121FBF00345BFB /* MoleculeStackTemplate.swift in Sources */,
D29DF11821E6805F003B2FB9 /* NSLayoutConstraint+MFConvenience.m in Sources */,
D29DF26C21E6AA0B003B2FB9 /* FLAnimatedImage.m in Sources */,

View File

@ -0,0 +1,66 @@
//
// MultiProgress.swift
// MVMCoreUI
//
// Created by Ryan on 9/9/19.
// Copyright © 2019 Verizon Wireless. All rights reserved.
//
import UIKit
@objcMembers open class MultiProgress: MFView {
var progressList = Array<[AnyHashable: Any]>()
var roundedRect : Bool = false
var thicknessConstraint : NSLayoutConstraint?
let defaultHeight : CGFloat = 8
override open func setupView() {
super.setupView()
translatesAutoresizingMaskIntoConstraints = false
backgroundColor = .mfSilver()
clipsToBounds = true
}
override open func setWithJSON(_ json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable : Any]?) {
super.setWithJSON(json, delegateObject: delegateObject, additionalData: additionalData)
thicknessConstraint?.isActive = false
thicknessConstraint = nil
let height = json?.optionalCGFloatForKey("thickness") ?? defaultHeight
let constraint = heightAnchor.constraint(equalToConstant: height)
constraint.isActive = true
thicknessConstraint = constraint
if let rounded = json?.optionalBoolForKey("roundedRect") {
self.roundedRect = rounded
self.layer.cornerRadius = (thicknessConstraint?.constant ?? defaultHeight)/2
}
if let list = json?.optionalArrayForKey("progressList") as? [[AnyHashable: Any]] {
progressList = list
var previous : UIView?
for module in progressList {
let view = MFView(frame: .zero)
view.translatesAutoresizingMaskIntoConstraints = false
addSubview(view)
view.backgroundColor = UIColor.mfGet(forHex: module.optionalStringForKey("progressColor") ?? "#007bb8")
view.widthAnchor.constraint(equalTo: widthAnchor, multiplier: (module.optionalCGFloatForKey("progress") ?? 0)/100).isActive = true
if previous != nil {
view.leadingAnchor.constraint(equalTo: previous!.trailingAnchor).isActive = true
previous = view
} else {
let constraint = view.leadingAnchor.constraint(equalTo: leadingAnchor)
constraint.priority = UILayoutPriority(rawValue: 900)
constraint.isActive = true
previous = view
}
NSLayoutConstraint.constraintPinSubview(view, pinTop: true, pinBottom: true, pinLeft: false, pinRight: false)
}
guard previous != nil else {return}
let constraint = trailingAnchor.constraint(equalTo: previous!.trailingAnchor)
constraint.priority = UILayoutPriority(800)
constraint.isActive = true
}
}
}

View File

@ -41,6 +41,7 @@
@"checkbox" : MVMCoreUICheckBox.class,
@"cornerLabels" : CornerLabels.class,
@"progressBar": ProgressBar.class,
@"multiProgress": MultiProgress.class,
@"checkbox": MVMCoreUICheckBox.class,
@"listItem": MoleculeTableViewCell.class,
@"accordionListItem": AccordionMoleculeTableViewCell.class,