67 lines
2.2 KiB
Swift
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)
|
|
}
|
|
}
|
|
|
|
}
|