forked from kudoleh/iOS-Clean-Architecture-MVVM
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLoadingView.swift
47 lines (40 loc) · 1.28 KB
/
LoadingView.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//
// LoadingView.swift
// ExampleMVVM
//
// Created by Oleh Kudinov on 28/03/2020.
//
import UIKit
public class LoadingView {
internal static var spinner: UIActivityIndicatorView?
public static func show() {
DispatchQueue.main.async {
NotificationCenter.default.addObserver(self, selector: #selector(update), name: UIDevice.orientationDidChangeNotification, object: nil)
if spinner == nil, let window = UIApplication.shared.keyWindow {
let frame = UIScreen.main.bounds
let spinner = UIActivityIndicatorView(frame: frame)
spinner.backgroundColor = UIColor.black.withAlphaComponent(0.2)
spinner.style = .whiteLarge
window.addSubview(spinner)
spinner.startAnimating()
self.spinner = spinner
}
}
}
public static func hide() {
DispatchQueue.main.async {
guard let spinner = spinner else { return }
spinner.stopAnimating()
spinner.removeFromSuperview()
self.spinner = nil
}
}
@objc public static func update() {
DispatchQueue.main.async {
if spinner != nil {
hide()
show()
}
}
}
}