본문 바로가기

iOS/Swift

[Swift] Loading Dialogue

import UIKit

 

open class Spinner {

 

    internal static var spinner: UIActivityIndicatorView?

    public static var style: UIActivityIndicatorView.Style = .whiteLarge

    public static var baseBackColor = UIColor.black.withAlphaComponent(0.5)

    public static var baseColor = UIColor.white

    

    public static func start(style: UIActivityIndicatorView.Style = style, backColor: UIColor = baseBackColor, baseColor: UIColor = baseColor) {

        

        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

            spinner = UIActivityIndicatorView(frame: frame)

            spinner!.backgroundColor = backColor

            spinner!.style = style

            spinner?.color = baseColor

            window.addSubview(spinner!)

            spinner!.startAnimating()

        }

    }

    

    public static func stop() {

        if spinner != nil {

            spinner!.stopAnimating()

            spinner!.removeFromSuperview()

            spinner = nil

        }

    }

    

    @objc public static func update() {

        if spinner != nil {

            stop()

            start()

        }

    }

}

 

 

링크)

https://gist.github.com/michal-majchrzycki/9e41a6ab195e931b5e33336dbf433427