jsoncreator_app/JSONCreator_iOS/JSONCreator/5G/BGThreeLayerTemplate.swift
Matt Bruce 6af01f17fb added 5g
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2023-02-01 13:14:35 -06:00

67 lines
2.2 KiB
Swift

//
// BGThreeLayerTemplate.swift
// JSONCreator
//
// Created by Matt Bruce on 2/1/23.
// Copyright © 2023 Verizon Wireless. All rights reserved.
//
import Foundation
import MVMCoreUI
@objcMembers public class BGThreeLayerPageTemplateModel: ThreeLayerPageTemplateModel {
public override class var identifier: String { "bgThreeLayer" }
public var backgroundImage: ImageViewModel
//--------------------------------------------------
// MARK: - Keys
//--------------------------------------------------
private enum CodingKeys: String, CodingKey {
case backgroundImage
}
//--------------------------------------------------
// MARK: - Codec
//--------------------------------------------------
required public init(from decoder: Decoder) throws {
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
backgroundImage = try typeContainer.decode(ImageViewModel.self, forKey: .backgroundImage)
try super.init(from: decoder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encodeModelIfPresent(backgroundImage, forKey: .backgroundImage)
}
}
@objcMembers open class BGThreeLayerTemplate<TemplateModel: BGThreeLayerPageTemplateModel>: ThreeLayerTemplate<TemplateModel> {
open var backgroundImage: LoadImageView?
open override func loadView() {
super.loadView()
if let contentView {
let imageView = LoadImageView(pinnedEdges: .all)
imageView.translatesAutoresizingMaskIntoConstraints = false
backgroundImage = imageView
scrollView.insertSubview(imageView, belowSubview: contentView)
imageView.pinTop(view.topAnchor)
imageView.pinBottom(view.bottomAnchor)
imageView.pinLeading(view.leadingAnchor)
imageView.pinTrailing(view.trailingAnchor)
}
}
open override func handleNewData() {
super.handleNewData()
if let model = templateModel {
backgroundImage?.set(with: model.backgroundImage, nil, nil)
}
}
}