116 lines
6.3 KiB
Swift
116 lines
6.3 KiB
Swift
//
|
|
// 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)
|
|
}
|
|
}
|