added fullscreen

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2023-07-05 16:04:47 -05:00
parent 92521eca74
commit 0aae405bb8

View File

@ -7,10 +7,12 @@
import Foundation
import VDS
import UIKit
class LoaderViewController: BaseViewController<Loader> {
class LoaderViewController: BaseViewController<Loader>, LoaderLaunchable {
var isActive = Toggle().with { $0.isOn = true }
var isFullscreen = Toggle().with { $0.isOn = false }
override func viewDidLoad() {
super.viewDidLoad()
@ -23,11 +25,30 @@ class LoaderViewController: BaseViewController<Loader> {
super.setupForm()
addFormRow(label: "Surface", view: surfacePickerSelectorView)
addFormRow(label: "Active", view: .makeWrapper(for: isActive))
isActive.publisher(for: .valueChanged)
addFormRow(label: "Fullscreen", view: .makeWrapper(for: isFullscreen))
isActive
.publisher(for: .valueChanged)
.sink { [weak self] toggle in
self?.component.isActive = toggle.isOn
}.store(in: &subscribers)
isFullscreen
.publisher(for: .valueChanged)
.sink { [weak self] toggle in
guard let self else { return }
self.showLoader(fullScreen: toggle.isOn)
}.store(in: &subscribers)
}
func showLoader(fullScreen: Bool) {
if fullScreen {
component.isHidden = true
presentLoader(surface: self.component.surface)
} else {
dismissLoader()
component.isHidden = false
}
}
func setupPicker() {
@ -36,4 +57,25 @@ class LoaderViewController: BaseViewController<Loader> {
self?.contentTopView.backgroundColor = item.color
}
}
public func presentLoader(surface: Surface, size: Int? = nil) {
if let presenting = UIApplication.topViewController() {
let viewController = VDS.LoaderViewController(nibName: nil, bundle: nil).with {
$0.surface = surface
if let size {
$0.size = size
}
$0.modalPresentationStyle = .overFullScreen
$0.modalTransitionStyle = .crossDissolve
}
viewController.view
.publisher(for: UITapGestureRecognizer())
.sink {[weak self] tap in
guard let self else { return }
self.isFullscreen.isOn = false
self.showLoader(fullScreen: false)
}.store(in: &subscribers)
presenting.present(viewController, animated: true)
}
}
}