89 lines
3.8 KiB
Swift
89 lines
3.8 KiB
Swift
//
|
|
// StandardHeaderView.swift
|
|
// MVMCoreUI
|
|
//
|
|
// Created by Scott Pfeil on 2/12/19.
|
|
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
public class StandardHeaderView: MoleculeContainer {
|
|
var line: Line?
|
|
|
|
// MARK: - MVMCoreViewProtocol
|
|
open override func updateView(_ size: CGFloat) {
|
|
super.updateView(size)
|
|
line?.updateView(size)
|
|
}
|
|
|
|
public override func setupView() {
|
|
super.setupView()
|
|
topMarginPadding = PaddingDefaultVerticalSpacing
|
|
bottomMarginPadding = PaddingDefaultVerticalSpacing
|
|
|
|
guard line == nil else { return }
|
|
let line = Line()
|
|
line.style = .heavy
|
|
addSubview(line)
|
|
NSLayoutConstraint.pinViewBottom(toSuperview: line, useMargins: false, constant: 0).isActive = true
|
|
NSLayoutConstraint.pinViewLeft(toSuperview: line, useMargins: true, constant: 0).isActive = true
|
|
NSLayoutConstraint.pinViewRight(toSuperview: line, useMargins: true, constant: 0).isActive = true
|
|
self.line = line
|
|
}
|
|
|
|
// MARK: - MVMCoreUIMoleculeViewProtocol
|
|
open override func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
|
super.setWithJSON(json, delegateObject: delegateObject, additionalData: additionalData)
|
|
if let separatorJSON = json?.optionalDictionaryForKey("separator") {
|
|
line?.setWithJSON(separatorJSON, delegateObject: delegateObject, additionalData: additionalData)
|
|
}
|
|
}
|
|
|
|
open override func setWithModel(_ model: MoleculeProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [String : AnyHashable]?) {
|
|
super.setWithModel(model, delegateObject, additionalData)
|
|
|
|
guard let headerModel = model as? HeaderModel else {
|
|
return
|
|
}
|
|
|
|
if let seperatorModel = headerModel.seperator as? LineModel {
|
|
line?.setWithJSON(seperatorModel.toJSON(), delegateObject: delegateObject, additionalData: additionalData)
|
|
}
|
|
}
|
|
|
|
// open func setWithModel(_ model: MoleculeProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [String : AnyHashable]?) {
|
|
// //TODO: Need to create setWithModel in ViewConstraining View
|
|
//
|
|
// #warning("This below call should be repaced with super.setWithModel once we get rid of ViewConstrainingView.")
|
|
// //TODO: This below call should be repaced with super.setWithModel once we get rid of ViewConstrainingView.
|
|
// setUpWithModel(model, delegateObject, additionalData)
|
|
//
|
|
// // This molecule will by default handle margins.
|
|
// (molecule as? MVMCoreUIViewConstrainingProtocol)?.shouldSetHorizontalMargins?(false)
|
|
// (molecule as? MVMCoreUIViewConstrainingProtocol)?.shouldSetVerticalMargins?(false)
|
|
//
|
|
// guard let headerModel = model as? HeaderModel else {
|
|
// return
|
|
// }
|
|
//
|
|
// if let seperatorModel = headerModel.seperator as? LineModel {
|
|
// line?.setWithJSON(seperatorModel.toJSON(), delegateObject: delegateObject, additionalData: additionalData)
|
|
// }
|
|
// }
|
|
|
|
open override func reset() {
|
|
super.reset()
|
|
line?.style = .heavy
|
|
topMarginPadding = PaddingDefaultVerticalSpacing
|
|
bottomMarginPadding = PaddingDefaultVerticalSpacing
|
|
}
|
|
|
|
public class func estimatedHeight(forRow json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat {
|
|
if let moleculeJSON = json?.optionalDictionaryForKey(KeyMolecule), let height = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(withJSON: moleculeJSON)?.estimatedHeight?(forRow: moleculeJSON, delegateObject: delegateObject) {
|
|
return height + PaddingDefaultVerticalSpacing + PaddingDefaultVerticalSpacing
|
|
}
|
|
return 121
|
|
}
|
|
}
|