// // ProgressBarView.swift // MVMCoreUI // // Created by Panth Patel on 5/3/19. // Copyright © 2019 Verizon Wireless. All rights reserved. // import UIKit @objcMembers open class ProgressBarView: ViewConstrainingView { var progress = ProgressBar() var topleftlabel = Label() var toprightlabel = Label() var bottomleftlabel = Label() var bottomrightlabel = Label() var thickness: Float? public init() { super.init(frame: .zero) } public override init(frame: CGRect) { super.init(frame: frame) } required public init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } open override func updateView(_ size: CGFloat) { super.updateView(size) } open override func needsToBeConstrained() -> Bool { return true } open override func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: DelegateObject?, additionalData: [AnyHashable: Any]?) { super.setWithJSON(json, delegateObject: delegateObject, additionalData: additionalData) progress.styleprogessbar(json: json) let thickness = json?.floatFromStringForKey("thickness") let topleftlabeljson = json?.optionalDictionaryForKey("label") let toprightlabeljson = json?.optionalDictionaryForKey("toprightlabel") let bottomleftlabeljson = json?.optionalDictionaryForKey("bottomleftlabel") let bottomrightlabeljson = json?.optionalDictionaryForKey("bottomrightlabel") topleftlabel.setWithJSON(topleftlabeljson, delegateObject: delegateObject, additionalData: additionalData) toprightlabel.setWithJSON(toprightlabeljson, delegateObject: delegateObject, additionalData: additionalData) bottomleftlabel.setWithJSON(bottomleftlabeljson, delegateObject: delegateObject, additionalData: additionalData) bottomrightlabel.setWithJSON(bottomrightlabeljson, delegateObject: delegateObject, additionalData: additionalData) progress.heightAnchor.constraint(equalToConstant: CGFloat(thickness ?? Float(PaddingTwo))).isActive = true } override open func setupView() { super.setupView() addSubview(topleftlabel) addSubview(toprightlabel) addSubview(bottomleftlabel) addSubview(bottomrightlabel) addSubview(progress) progress.translatesAutoresizingMaskIntoConstraints = false topleftlabel.leftAnchor.constraint(equalTo: self.leftAnchor).isActive = true topleftlabel.topAnchor.constraint(equalTo: self.topAnchor).isActive = true let topleftconstarint = NSLayoutConstraint(item: topleftlabel, attribute: .width, relatedBy: .equal, toItem: self, attribute: .width, multiplier: 0.5, constant: 0.0) topleftconstarint.priority = UILayoutPriority(rawValue: 100) topleftconstarint.isActive = true topleftlabel.setContentHuggingPriority(UILayoutPriority(801), for: .horizontal) topleftlabel.setContentHuggingPriority(UILayoutPriority(801), for: .vertical) NSLayoutConstraint(item: toprightlabel, attribute: .leading, relatedBy: .equal, toItem: topleftlabel, attribute: .trailing, multiplier: 1.0, constant: PaddingTwo).isActive = true toprightlabel.rightAnchor.constraint(equalTo: self.rightAnchor).isActive = true toprightlabel.topAnchor.constraint(equalTo: self.topAnchor).isActive = true toprightlabel.textAlignment = .right let toprightconstraint = NSLayoutConstraint(item: toprightlabel, attribute: .width, relatedBy: .equal, toItem: self, attribute: .width, multiplier: 0.5, constant: 0.0) toprightconstraint.priority = UILayoutPriority(rawValue: 100) toprightconstraint.isActive = true toprightlabel.setContentHuggingPriority(UILayoutPriority(1000), for: .horizontal) toprightlabel.setContentHuggingPriority(UILayoutPriority(802), for: .vertical) let progressconstraintone = NSLayoutConstraint(item: progress, attribute: .top, relatedBy: .equal, toItem: topleftlabel, attribute: .bottom, multiplier: 1.0, constant: PaddingTwo) progressconstraintone.priority = UILayoutPriority(rawValue: 700) progressconstraintone.isActive = true let progressconstrainttwo = NSLayoutConstraint(item: progress, attribute: .top, relatedBy: .greaterThanOrEqual, toItem: toprightlabel, attribute: .bottom, multiplier: 1.0, constant: PaddingTwo) progressconstrainttwo.priority = UILayoutPriority(rawValue: 1000) progressconstrainttwo.isActive = true progress.leftAnchor.constraint(equalTo: self.leftAnchor).isActive = true progress.rightAnchor.constraint(equalTo: self.rightAnchor).isActive = true bottomleftlabel.topAnchor.constraint(equalTo: progress.bottomAnchor, constant: PaddingTwo).isActive = true bottomleftlabel.leftAnchor.constraint(equalTo: self.leftAnchor).isActive = true let bottomleftconstraint = NSLayoutConstraint(item: bottomleftlabel, attribute: .width, relatedBy: .equal, toItem: self, attribute: .width, multiplier: 0.5, constant: 0.0) bottomleftconstraint.priority = UILayoutPriority(100) bottomleftconstraint.isActive = true bottomleftlabel.setContentHuggingPriority(UILayoutPriority(900), for: .horizontal) bottomleftlabel.setContentHuggingPriority(UILayoutPriority(850), for: .vertical) NSLayoutConstraint(item: bottomrightlabel, attribute: .leading, relatedBy: .equal, toItem: bottomleftlabel, attribute: .trailing, multiplier: 1.0, constant: PaddingTwo).isActive = true bottomrightlabel.topAnchor.constraint(equalTo: progress.bottomAnchor, constant: PaddingTwo).isActive = true bottomrightlabel.rightAnchor.constraint(equalTo: self.rightAnchor).isActive = true let bottomrightconstraint = NSLayoutConstraint(item: bottomrightlabel, attribute: .width, relatedBy: .equal, toItem: self, attribute: .width, multiplier: 0.5, constant: 0.0) bottomrightconstraint.priority = UILayoutPriority(100) bottomrightconstraint.isActive = true bottomrightlabel.textAlignment = .right bottomrightlabel.setContentHuggingPriority(UILayoutPriority(1000), for: .horizontal) bottomrightlabel.setContentHuggingPriority(UILayoutPriority(851), for: .vertical) } }